r - 如何通过仅对 R 中现有列中的行中的文本进行子集化来创建新列

标签 r

我正在尝试从下面的示例数据中获取一个新列“物种”,该列应仅包含“样本”列中的字符。

Sample GermD    OD GermDD 
   <chr>  <dbl> <dbl>  <dbl> 
 1 TP_126     2  4.20      2 
 2 TP_126     2  4.35      2 
 3 TP_124     2  3.87      2 
 4 TP_124    NA  4.33     10 
 5 NP_120     2  4.92      2 
 6 NP_120     2  3.78      2 
 7 LO_100     2  4.05      2 

我正在尝试以下代码:

df %>%
  dplyr::mutate(Species = strsplit(Sample, split="_"))

期望的结果应该是这样的。

Sample GermD    OD GermDD Species
   <chr>  <dbl> <dbl>  <dbl> <chr> 
 1 TP_126     2  4.20      2 TP
 2 TP_126     2  4.35      2 TP
 3 TP_124     2  3.87      2 TP
 4 TP_124    NA  4.33     10 TP
 5 NP_120     2  4.92      2 NP
 6 NP_120     2  3.78      2 NP
 7 LO_100     2  4.05      2 LO

感谢您的帮助。

最佳答案

您还可以这样做:

library(dplyr)

df %>%
  mutate(Species = sub('_.*', '', Sample))

输出:

  Sample GermD   OD GermDD Species
1 TP_126     2 4.20      2      TP
2 TP_126     2 4.35      2      TP
3 TP_124     2 3.87      2      TP
4 TP_124    NA 4.33     10      TP
5 NP_120     2 4.92      2      NP
6 NP_120     2 3.78      2      NP
7 LO_100     2 4.05      2      LO

关于r - 如何通过仅对 R 中现有列中的行中的文本进行子集化来创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696472/

相关文章:

r - 接受裸(来自 rlang)或字符串作为函数输入

r - 在 ggplot 点图中为垂直线添加第二个图例

list - 在 R 中解压省略号的参数列表

r - 如何通过使用 R 中时间序列中的第一个和最后一个时间戳来定义遭遇时间段

r - 如何使用sentimentr或qdap检测否定句

javascript - 如何将 html 文件包含在另一个 html 文件中

R plot.gam 错误 "Error in 1:object$nsdf : argument of length 0"

rollapply 与一个函数采用矩阵返回 "incorrect number of dimensions"

r - 条形图定制

r - sqldf:按日期范围查询数据