下面我做错了什么?我正在尝试创建一个新列,如果它匹配某个字符串,则用匹配行Col_2中的值替换Col_1的值,否则返回Col_1的值。
有许多例子-主要是this和this,但它们似乎在 Dataframe 的第1列上操作-下面的代码可以很好地工作。我特意在第1列中插入了一个插槽,以反映我的数据需要:
我所尝试的
library(dplyr)
df <- data.frame(cbind('num' = c(1,2,3,4),
'tenure' = c('Unknown', 'a', 'Unknown', 'b'),
'tenure_2' = c('t', 's', 'u', 'v')))
df['new_col'] <- df %>%
mutate(tenure = ifelse(tenure == "Unknown", tenure_2, tenure))
为什么它选择第一列?我很高兴听到更好的解决方案,我可能忽略了。
2条答案
按热度按时间jc3wubiy1#
您试图同时使用
base
和dplyr
语法。ifelse()
返回一个向量,可以使用df['new_col'] <- ifelse(...)
将其赋值给单个列。另一方面,mutate()
返回一个完整的 Dataframe ,您希望将其赋值为df <- df %>% mutate(...)
。以下两种方法都可以:myss37ts2#
使用
data.table