我有这个数据框
# My dataframe
df <- data.frame(
id_do_cliente = c(852, 966, 677, 877, 176, 69, 688, 525, 307, 127),
nome_completo = c(
"John Smith", "Emily Johnson", "Michael Brown",
"Sarah Davis", "James Miller", "Emma Wilson",
"Olivia Moore", "William Taylor", "Sophia Anderson",
"Isabella Thomas"
)
)
# Exibindo o dataframe
print(df)
我想从 Complete_name 列中为名字和第二个名字创建 2 列。
我必须使用函数
str_split()
和参数 simplify = FALSE
我正在这样做,但我无法访问第一个名字和第二个名字:
df %>%
mutate(
first_name = unlist(str_split(complete_name, " ", simplify = FALSE,2)[[1]][1]),
second_name = unlist(str_split(complete_name, " ", simplify = FALSE,2)[[2]][2]))
我做错了什么?
PS:我需要尽可能接近该代码。我相信问题出在我使用运算符的方式
[[
大家有什么帮助吗?
您需要告诉 R 对每一行执行此操作,并且第一个
[[
访问由 str_split
返回的列表,因此在这两种情况下,第一个索引都应该是 1:
df %>%
rowwise() %>%
mutate(
first_name = unlist(str_split(complete_name, " ", simplify = FALSE,2)[[1]][1]),
second_name = unlist(str_split(complete_name, " ", simplify = FALSE,2)[[1]][2]))
如果您不必使用
str_split
,我建议您看一下seperate_*
函数,例如separate_wider_delim