如何在CSV中分隔一行,并在R中从中生成另一个CSV文件?
我有一个CSV文件,比如如何在CSV中分隔一行,并在R中从中生成另一个CSV文件?,r,csv,R,Csv,我有一个CSV文件,比如 AdvertiserName,CampaignName Wells Fargo,Gary IN MetroChicago IL Metro EMC,Los Angeles CA MetroBoston MA Metro Apple,Cupertino CA Metro R中的期望输出 AdvertiserName,City,State Wells Fargo,Gary,IN Wells Fargo,Chicago,IL EMC,Los Angeles,CA EMC,B
AdvertiserName,CampaignName
Wells Fargo,Gary IN MetroChicago IL Metro
EMC,Los Angeles CA MetroBoston MA Metro
Apple,Cupertino CA Metro
R中的期望输出
AdvertiserName,City,State
Wells Fargo,Gary,IN
Wells Fargo,Chicago,IL
EMC,Los Angeles,CA
EMC,Boston,MA
Apple,Cupertino,CA
我是这样做的
record <- read.csv("C:/Users/Administrator/Downloads/Campaignname.csv",header=TRUE)
ad <- record$AdvertiserName
camp <- record$CampaignName
read.table(text=gsub('Metro', '\n', c), col.names=c('City', 'State'))
record您可以这样做,例如:
## read the csv file, you change text here by your fileName
xx <- read.table(text ='AdvertiserName,CampaignName
Wells Fargo,Gary INMetro Chicago IL Metro
EMC,Los Angeles CAMetro Boston MA Metro',sep=',',header=TRUE)
## use regular expression to create city and state variables
## rows are separated by ":"
## columns are separated by a comma ","
res <-
gsub('(.*) ([A-Z]{2})*Metro (.*) ([A-Z]{2}) .*','\\1,\\2:\\3,\\4',
xx$CampaignName)
## Use strsrsplit to extract rows and columns
## This is a compacted code !
yy <-
Map(function(x,y)
cbind.data.frame(y,do.call(rbind,strsplit(x,','))),
strsplit(res,':'),xx$AdvertiserName)
## create the final data.frame and set names
res <- do.call(rbind,yy)
setNames(res, c('AdvertiserName','City','State'))
AdvertiserName City State
1 Wells Fargo Gary IN
2 Wells Fargo Chicago IL
3 EMC Los Angeles CA
4 EMC Boston MA
##读取csv文件,您可以通过文件名更改此处的文本
xx其他两个城市呢?@user3188390我更新了我的答案。这比我想象的要难:)@astudy谢谢,我从哪里可以了解到所有这些东西,R新手,有什么建议吗?@user3188390网上有很多资源/教程(也有)。阅读基础并尝试解决一些简单的问题。练习是解决困难的最佳方法。你的意思是你将有像身份、广告商名称、活动名称id1、富国银行、加里·因麦德勒、芝加哥和伊利诺伊州麦德勒这样的输入?