我正在努力解决这个问题。想要根据另一列的字符串创建一个基于字符串值的新列。我能够创建一个空列,但我对如何基于具有其他字符串的列创建新字符串感到困惑。如果名为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
答案 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