r - 在 dplyr 和 mutate 中使用 strsplit 和 subset

标签 r dplyr strsplit

我有一个包含一个字符串列的数据表。我想使用 strsplit 创建另一个列,它是该列的子集。

dat <- data.table(labels=c('a_1','b_2','c_3','d_4'))

我想要的输出是

label  sub_label
a_1    a
b_2    b
c_3    c
d_4    d 

我已经尝试过以下方法,但似乎都不起作用。

dat %>%
    mutate(
        sub_labels=strsplit(as.character(labels), "_")[[1]][1]
    ) 
# gives a column whose values are all "a"

这个对我来说似乎合乎逻辑,

dat %>%
    mutate(
        sub_labels=sapply(strsplit(as.character(labels), "_"), function(x) x[[1]][1])
    )

报错

Error: Don't know how to handle type pairlist

我看到另一篇文章,其中对 strsplit 的输出进行粘贴折叠起作用,所以我不明白为什么匿名函数中的子集设置会出现问题。感谢您对此的任何解释。

最佳答案

tidyr::separate可以在这里提供帮助:

> dat %>% separate(labels, c("first", "second") )
   first second
1:     a      1
2:     b      2
3:     c      3
4:     d      4    

关于r - 在 dplyr 和 mutate 中使用 strsplit 和 subset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42565539/

相关文章:

r - 嵌套整齐模型并在 ggplot 中绘制 abline

r - R中大矩阵的直方图

r - 基于阈值定义循环

r - 当使用 group_by() 后跟 summarise() 和 dplyr 时,如何在分组中不包括 NA 观察结果?

string - R:分割数字字符串

r - jar 直方图并出现错误 "missing value where TRUE/FALSE needed"

r - dplyr "not a promise"错误

r - 使用 dplyr::group_by 根据分组变量的值运行一组函数

regex - R:使用strsplit和perl REGEX语法提取大写字母和特殊字符

R: strsplit 负面环视