如何在使用基础R时包含新列?

时间:2014-02-26 05:20:32

标签: r csv

我有一个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帮助的新人表示赞赏。

1 个答案:

答案 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中的行数。