我一直在使用which()在mutate中定义一个新的变量。
我有两个 Dataframe :
df1 <- data.frame(
telephone = c("1231231234", "2342342345", "3453453456", "1231231234"),
email = c("a@email.com", "b@email.com", "c@email.com", "d@mail.com")
)
df2 <- data.frame(
phone = c("1231231234", "2342342345", "3453453456")
)
我试图做的是向df2添加一个新变量,该变量存储df1$telephone中出现“phone”值的每个行号。我尝试了以下操作:
df2 <- df2 %>%
mutate(
phone_ind = str_flatten(which(df1$telephone == phone), collapse = ", ")
)
这将产生警告
警告信息:计算phone_ind = str_flatten(which(df1$telephone == phone), collapse = ", ")
时出现问题。
较长对象长度不是较短对象长度的倍数
以及以下明显错误的结果:
df2 <- data.frame(
phone = c("1231231234", "2342342345", "3453453456"),
phone_ind = c("1, 2, 3, 4", "1, 2, 3, 4", "1, 2, 3, 4")
)
有什么想法吗?提前感谢您的任何见解。
3条答案
按热度按时间vtwuwzda1#
结果
twh00eeo2#
您也可以先将行号添加到
df1
,然后将其连接到df2
并折叠行号:创建于2023-03-21带有reprex v2.0.2
ajsxfq5m3#
您可以在base R中使用
sapply
和paste
(或者如果您更喜欢使用stringr
包,则只需将paste
更改为str_flatten
)