R - 根据另一列中的字符串文本将字符串放入新的空列中

时间:2017-04-24 13:54:41

标签: r

我正在努力解决这个问题。想要根据另一列的字符串创建一个基于字符串值的新列。我能够创建一个空列,但我对如何基于具有其他字符串的列创建新字符串感到困惑。如果名为bank的第1列中的数据是jpm,cs,gs,bmo等,那么我希望能够在所有jpm实例的空列4中说北美,并将所有cs实例放入瑞士。谢谢你的帮助

例如:

Banks           New column
JPM             North America
CS              Switzerland
JPM             North America
GS
CS              Switzerland
BMO
CS              Switzerland

2 个答案:

答案 0 :(得分:1)

您需要的是拥有一个映射表,然后与旧的data.frame合并。

df <- data.frame(Banks = c("JPM", "CS", "GS"), New_Col = c("North America", "Switzerland", ""))
res <- merge(df_old, df, by = "Banks", all.x = T)

答案 1 :(得分:1)

另一种方法是使用case_when中的dplyr

df <-read.table(text="Banks
JPM
CS
JPM
GS
CS
BMO
CS",header=TRUE,stringsAsFactors=FALSE)

library(dplyr)
df%>%
mutate(New_column=case_when(
.$Banks %in% c("JPM","BMO","GS") ~ "North America",
.$Banks %in% c("CS")             ~ "Switzerland"
))

  Banks    New_column
1   JPM North America
2    CS   Switzerland
3   JPM North America
4    GS North America
5    CS   Switzerland
6   BMO North America
7    CS   Switzerland