我有一个csv文件'Campaigname.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
解决方案的代码在previous stackoverflow answer中给出:
## read the csv file - modify next line as needed
xx <- read.csv("Campaignname.csv",header=TRUE)
s <- strsplit(xx$CampaignName, " Metro")
names(s) <- xx$Market
ss <- stack(s)
DF <- with(ss, data.frame(Market = ind,
City = sub(" ..$", "", values),
State = sub(".* ", "", values)))
write.csv(DF, file = "myfile.csv", row.names = FALSE, quote = FALSE)
但现在输入
的其他列包括'Identity'Market,CampaignName,Identity
Wells Fargo,Gary IN MetroChicago IL Metro,56
EMC,Los Angeles CA MetroBoston MA Metro,78
Apple,Cupertino CA Metro,68
期望的结果是
Market,City,State,Identity
Wells Fargo,Gary,IN,56
Wells Fargo,Chicago,IL,56
EMC,Los Angeles,CA,78
EMC,Boston,MA,78
Apple,Cupertino,CA,68
列数可能不仅限于3列,它可能会继续增加。
如何在R中执行此操作? R.Any帮助的新人表示赞赏。
答案 0 :(得分:1)
我不确定我是否完全理解您的问题,并且您没有提供可重现的示例(因此我无法运行您的代码并尝试达到您想要的终点)。但我仍然会尽力帮忙。
一般来说,在R中,只需使用它就可以向data.frame添加新列。
df = data.frame(advertiser = c("co1", "co2", "co3"),
campaign = c("camp1", "camp2", "camp3"))
df
advertiser campaign
1 co1 camp1
2 co2 camp2
3 co3 camp3
此时,如果我想添加identity
列,我只需使用$
运算符创建它,如下所示:
df$identity = c(1, 2, 3)
df
advertiser campaign identity
1 co1 camp1 1
2 co2 camp2 2
3 co3 camp3 3
请注意,还有其他方法可以实现此目的 - 请参阅transform
(?transform)和rbind
(?rbind)函数。
向data.frame添加列时的警告是,我相信您必须添加一个向量,该向量与data.frame中的行数相同。您可以通过键入nrow(df)
来查看data.frame中的行数。