Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中,检查行中是否显示1(在任何选定列中)_R_Dataframe - Fatal编程技术网

在R中,检查行中是否显示1(在任何选定列中)

在R中,检查行中是否显示1(在任何选定列中),r,dataframe,R,Dataframe,数据是二进制的。我需要编写一些代码来检查所选列是否为1,并用这些信息填充新列 我不希望它检查dataframe中的所有列,只按名称检查指定的列 让我们假设感兴趣的栏目是:问题1,吸烟者和饮酒者 我有: Subject question1 question2 smoker drinker A 1 0 0 1 B 0 1 0

数据是二进制的。我需要编写一些代码来检查所选列是否为1,并用这些信息填充新列

我不希望它检查dataframe中的所有列,只按名称检查指定的列

让我们假设感兴趣的栏目是:问题1,吸烟者和饮酒者

我有:

Subject    question1 question2   smoker  drinker 
   A          1          0          0        1             
   B          0          1          0        0          
   C          0          0          0        0         
我想:

Subject    question1 question2  smoker  drinker   q1_smoker_or_drinker
   A          1          0          0        1         1             
   B          0          1          0        0         0            
   C          0          0          0        0         0     
我试过:

list1<- c('Subject', 'question1','smoker','drinker')
newdata <- data_scored[, list1]
grepl("1", newdata[2:4])
list1您可以使用“or”操作符,
。它在这里工作正常,因为R将1视为真,0视为假:

> df
  Subject question1 question2 smoker drinker
1       A         1         0      0       1
2       B         0         1      0       0
3       C         0         0      0       0
> df$q1_smoke_drink = df$question1 | df$smoker | df$drinker 
> df
  Subject question1 question2 smoker drinker q1_smoke_drink
1       A         1         0      0       1           TRUE
2       B         0         1      0       0          FALSE
3       C         0         0      0       0          FALSE
当您没有1和0时,
|
仍然可以正常工作,您只需要更明确地说明条件,例如

(df$question3 == "a") | (df$question4 == "b")
您可以使用“或”运算符,
|
。它在这里工作正常,因为R将1视为真,0视为假:

> df
  Subject question1 question2 smoker drinker
1       A         1         0      0       1
2       B         0         1      0       0
3       C         0         0      0       0
> df$q1_smoke_drink = df$question1 | df$smoker | df$drinker 
> df
  Subject question1 question2 smoker drinker q1_smoke_drink
1       A         1         0      0       1           TRUE
2       B         0         1      0       0          FALSE
3       C         0         0      0       0          FALSE
当您没有1和0时,
|
仍然可以正常工作,您只需要更明确地说明条件,例如

(df$question3 == "a") | (df$question4 == "b")

rowSums(df[-1])>0
@Onyambu如果可能的话,我更喜欢语义上有意义的代码,我认为我的代码读起来非常清楚,就是“检查Q1、吸烟者或饮酒者是否为1”,但可以将其作为一个单独的答案发布。
rowSums(df[-1])>0
@Onyambu如果可能,我更喜欢语义上有意义的代码,我认为我的代码读起来非常清楚,“检查Q1、吸烟者或饮酒者是否为1”,但可以将其作为单独的答案发布。
as.numeric(apply(newdata[2:4],1,function(x)any(x==1))
as.numeric(apply(newdata[2:4],1,function(x)any(x==1))