我想根据样本ID中有特定字母的观察结果,在我的数据集中创建一个新变量



我有样本ID为(B1T1、B2T1…(的数据,我想为所有B1和B2样本分配"Recovery",并为所有B3和B4样本分配"Acidic",但由于名称与治疗(T1、T2等(相关,我需要一种仅根据样本ID的一部分分配新变量的方法。

这是tidyr:中separate的一个很好的用例

library(tidyr)
ID <- c("B1T1", "B1T2", "B2T1", "B3T1", "B4T1", "B4T2")
val <- rnorm(6)
df <- data.frame(ID = ID, val = val)
df
#>     ID        val
#> 1 B1T1  0.2990410
#> 2 B1T2 -0.1363163
#> 3 B2T1 -0.5500596
#> 4 B3T1  0.7734307
#> 5 B4T1 -0.7522459
#> 6 B4T2 -0.5597933
df %>%
separate(ID, sep = 2, into = c("Group", "Treatment"))
#>   Group Treatment        val
#> 1    B1        T1  0.2990410
#> 2    B1        T2 -0.1363163
#> 3    B2        T1 -0.5500596
#> 4    B3        T1  0.7734307
#> 5    B4        T1 -0.7522459
#> 6    B4        T2 -0.5597933

由reprex包(v0.3.0(于2020-04-07创建

从那里,你可以分别重新标记你的"B"组和治疗。

最新更新