【问题标题】:Creating a new variable in a dataframe based on conditions [duplicate]根据条件在数据框中创建新变量[重复]
【发布时间】:2016-11-21 23:59:08
【问题描述】:

我在 R 中有一个数据框。例如,该数据框称为 X,包括以下列:

x1 = c(1,0,0,0)
X2 = c(0,0,0,0)
X3 = c(0,0,0,0)
X4 = c(0,0,1,0)

我想添加一个条件,即对于 4 个主题中的每一个,如果至少有一列是 1,那么将创建一个新变量并获得 1。否则,如果全部为 0,则新变量将为 0。

我试过了:

if (X$X1 == 1 || X$X2 == 1 || X$X3 == 1 || X$X4 == 1 || X$X5 == 1) 
{
  NewVar = 1
}
else { NewVar = 0 }

但是我不断收到错误:

错误:“else”中的意外“else”和我的代码 R 工作室说: 意外的令牌“其他”

您能帮我找出问题吗?谢谢。

【问题讨论】:

  • 使用X$NewVar <- as.integer(rowSums(X)>0)
  • df$newvar <- as.integer(rowSums(df) > 0)

标签: r if-statement


【解决方案1】:

我们可以使用rowSums

X$NewVar <- as.integer(rowSums(X) > 0)

【讨论】:

  • 谢谢,我会试试的,但是我的 if-else 代码有什么问题?如果我在数据框中有更多变量并且我希望仅以其中一些为条件会发生什么?例如,如果我只想以 X1,X2 为条件?
  • @user2899944 您使用的是if/else(适用于单个元素)并且它没有被矢量化。如果你想要一个矢量化选项,它是ifelse。二、||应该是|
  • 我明白了。请再问一个问题。如果我采用您上面的第一个想法,但我的数据框还包含一个变量(subjectID),我如何对不包括第一列的行求和?
  • @user2899944 在这种情况下as.integer(rowSums(X[-1])&gt;0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多