Как включить новый столбец при использовании базы R?

У меня есть файл csv как «Campaignname.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

Код решения был приведен в предыдущий ответ stackoverflow как:

## 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 csv
person user3188390    schedule 26.02.2014    source источник


Ответы (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. Вы можете увидеть количество строк в data.frame, набрав nrow(df).

person Ari    schedule 26.02.2014
comment
Спасибо за помощь, я ценю ваши усилия, поэтому мой вопрос отличается в том смысле, что изначально входной файл CSV имел 2 столбца, а теперь в него добавлено больше столбцов. Итак, как изменить указанный выше код, чтобы получить желаемый результат. Или любой другой возможный код будет полезен. - person user3188390; 26.02.2014
comment
Не могли бы вы отредактировать свой вопрос, чтобы показать, как вы читаете файл? Думаю, это помогло бы нам лучше понять, что происходит. - person Ari; 26.02.2014
comment
Отредактировал вопрос, «имена» просто добавили поле «Имя». - person user3188390; 26.02.2014