使用 R 中的 str_split() 将 1 列拆分为 2 列

问题描述 投票:0回答:1

我有这个数据框

   # 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 data-cleaning stringr
1个回答
0
投票

您需要告诉 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

© www.soinside.com 2019 - 2024. All rights reserved.