2014-02-26 32 views
0

我中的R csv文件爲 'Campaigname.csv'如何在使用base R時包含新列?

AdvertiserName,CampaignName 
Wells Fargo,Gary IN MetroChicago IL Metro 
EMC,Los Angeles CA MetroBoston MA Metro 
Apple,Cupertino CA Metro 

所需的輸出

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) 

但是現在另一列如「身份」包含在輸入爲

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.任何幫助表示讚賞。

回答

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中的行數。

+0

感謝您的幫助,我很欣賞你的努力,這麼說我的問題是,在這個意義上,最初輸入的CSV文件有2列不同,現在有更多的列添加。那麼如何修改上面指定的代碼以獲得所需的結果。或者任何其他可能的代碼將會有所幫助。 – user3188390

+0

您是否正在讀取和寫入CSV文件? – Ari

+0

是的,我正在讀取CSV文件並寫入CSV文件。 – user3188390

相關問題