首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据其他列更改列值

根据其他列更改列值
EN

Stack Overflow用户
提问于 2017-03-30 15:58:29
回答 1查看 49关注 0票数 0

我有个数据:

代码语言:javascript
复制
chrom position ref var normal_reads1 normal_reads2 normal_var_freq normal_gt tumor_reads1 tumor_reads2 tumor_var_freq tumor_gt somatic_status variant_p_value somatic_p_value
1    2L    13048   A   T            32            23           41.82         W           17            6          26.09        W       Germline    7.507123e-11       0.9437542
2    2L    16467   G   A             0            43          100.00         A            0           24         100.00        A           <NA>    6.674261e-40       1.0000000
3    2L    20682   T   A            32            14           30.43         W           14            6          30.00        W       Germline    1.746726e-07       0.6223244
4    2L    25727   T   G            52            22           29.73         K           16            4          20.00        K       Germline    2.000049e-09       0.8758070
5    2L    25729   A   T            49            23           31.94         W           16            4          20.00        W       Germline    7.938282e-10       0.9092970
6    2L    25741   T   C            45            28           38.36         Y           15            6          28.57        Y       Germline    1.497796e-12       0.8604958

如果somatic_statustumor_var_freq都是> 90,则我试图将其转换为"ROH“

以下是我尝试过的:

代码语言:javascript
复制
snps <- within(snps, somatic_status[normal_var_freq > 90 & tumor_var_freq > 90] <- 'ROH')

但我知道错误是:

代码语言:javascript
复制
Warning message:
In `[<-.factor`(`*tmp*`, normal_var_freq > 90 & tumor_var_freq >  :
  invalid factor level, NA generated

有人能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 16:01:37

在根据逻辑向量(‘factor’)将值赋给'ROH‘之前,我们可以将ROH分配给character class

代码语言:javascript
复制
i1 <- with(snps, normal_var_freq > 90 & tumor_var_freq > 90)
snps$somatic_status <- as.character(snps$somatic_status)
snps$somatic_status[i1] <- "ROH"

如果不希望在将某些元素更改为新值之前将factor列转换为character,则向该列添加一个新的character

代码语言:javascript
复制
levels(snps$somatic_status) <- c(levels(snps$somatic_status), "ROH")
snps$somatic_status[i1] <- "ROH"

关于within的使用,它是创建新变量或更新旧变量的有用函数,但不建议将值的子集分配给新值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43122813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档