Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CSV中分隔一行,并在R中从中生成另一个CSV文件?_R_Csv - Fatal编程技术网

如何在CSV中分隔一行,并在R中从中生成另一个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

我有一个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,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、富国银行、加里·因麦德勒、芝加哥和伊利诺伊州麦德勒这样的输入?