R:如何添加新列并使用其他列条件填充值(简单)

时间:2018-04-03 00:27:46

标签: r dataset

我知道这个问题非常简单并且已经得到了解答 - 我的问题是我是一个完整的初学者到R(我的意思是完整的初学者),所有的答案和解释我已发现有关此查询的内容比较复杂,需要比我目前更深入的了解R(并且有时间学习)。

我有一个大的csv数据集(500k +数据行),称为'overviewGenes',我需要创建一个新列并用'1'或'0'填充新列中的每个单元格,具体取决于相应行中另一列的值。

现有列'Gexact'在每行中包含“exact”或“non-specific”。我希望R创建列('BooleanExact'),对于每一行,如果Gexact列中的值为'exact',则输入'0',如果Gexact列中的值为'non',则输入'1' -具体'。

因此,下面是我希望它出现的方式:

Gexact       BooleanExact 
exact           0
exact           0
non-specific    1
exact           0
non-specific    1
像我说的那样,非常简单。我已经尝试在给出类似问题的答案中使用示例代码,但无论出于何种原因(可能是我对R的完全缺乏经验),它都没有奏效。我尝试过使用'for _ in ___'循环等,但它似乎不是正确的方法。

对于我应该用最简单的语言和方法执行此操作的代码的任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:0)

我们可以使用比较运算符来创建逻辑向量,然后使用`as.integer

将其强制转换为二进制
df1$BooleanExact  <- as.integer(df1$Gexact != "exact")
df1
#        Gexact BooleanExact
#1        exact            0
#2        exact            0
#3 non-specific            1
#4        exact            0
#5 non-specific            1

比较运算符

df1$Gexact != "exact"

返回逻辑向量TRUE / FALSE,其中TRUE表示不是&#34; exact&#34;对那些有&#34;确切&#34;

的人来说,这是错误的

as.integer换行,将TRUE转换为1,将FALSE转换为0

数据

df1 <- structure(list(Gexact = c("exact", "exact", "non-specific", "exact", 
"non-specific")), .Names = "Gexact", row.names = c(NA, -5L), 
 class = "data.frame")