gpt4 book ai didi

r - 使用 tidyr 分隔具有多个不同条目的列

转载 作者:行者123 更新时间:2023-12-02 15:44:24 24 4
gpt4 key购买 nike

我正在尝试将数据框中的一列拆分为两列(start_of_career、end_of_career),其中显示了多个艺术家/乐队的活跃时期。变量类是字符。我尝试为它使用 tidyrs 单独的函数,当我运行它时,我看到它在控制台中拆分,但在数据框本身中没有拆分,所以我认为它不能正常工作。

请在此处查看我要拆分的数据的虚构示例:

<表类="s-表"><头>A列B列<正文>艺术家A1995 年至今艺术家B1995-1997, 2008, 2010-至今

如您所见,有些行仅包含开始日期和结束日期,而其他行则有多个日期。我真正需要的只是第一个数字和最后一个数字,例如对于艺术家 B,我只需要 start_of_career 1995 和 end_of_career“现在”。但我无法解决这个问题。

我使用的代码是:

library(tidyr)
df %>% separate(col = period_active, into = c('start_of_career', 'end_of_career'), sep = '-')

我也尝试了其他分隔符(“,”,“”),但也没有用。

我也试过:

df$start_of_career = strsplit(df$period_active, split = '-')

但这并没有奏效。

最佳答案

使用 df 在末尾的注释中重复显示,删除除 B 列的第一部分和最后部分之外的所有内容,然后分离剩下的内容。

library(dplyr)
library(tidyr)

dd %>%
mutate(`Column B` = sub("-.*-", "-", `Column B`)) %>%
separate(`Column B`, c("start", "end"))
## Column A start end
## 1 Artist A 1995 present
## 2 Artist B 1995 present

注意事项

df <- 
structure(list(`Column A` = c("Artist A", "Artist B"), `Column B` = c("1995-present",
"1995-1997, 2008, 2010-present")), class = "data.frame", row.names = c(NA,
-2L))

关于r - 使用 tidyr 分隔具有多个不同条目的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74835965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com