Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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 基于跨多个列计算非NA值创建新列_R_If Statement - Fatal编程技术网

R 基于跨多个列计算非NA值创建新列

R 基于跨多个列计算非NA值创建新列,r,if-statement,R,If Statement,我有一个广泛格式的问卷数据框架。对于一些问题,受访者被要求回答给定情景是否适用于他们(是,否)。如果情景适用于他们,则要求受访者提供情景示例(在某些情况下,可能不止一个示例) 我的数据集如下所示,Q1表示一个场景,而Q1a、Q1b和Q1c是开放式字段,用于提供所述场景的示例 df <- data.frame(Q1 = c("Yes", "No", "Yes", "No", "Yes", "Yes", "Yes"), Q1a = c("AAA", NA, "AAA

我有一个广泛格式的问卷数据框架。对于一些问题,受访者被要求回答给定情景是否适用于他们(是,否)。如果情景适用于他们,则要求受访者提供情景示例(在某些情况下,可能不止一个示例)

我的数据集如下所示,Q1表示一个场景,而Q1a、Q1b和Q1c是开放式字段,用于提供所述场景的示例

df <- data.frame(Q1 = c("Yes", "No", "Yes", "No", "Yes", "Yes", "Yes"), 
             Q1a = c("AAA", NA, "AAA", NA, "ABC", "DDD", "EEE"),
             Q1b = c("BBB", NA, NA, NA, "BCD", NA, "AAA"),
             Q1c = c(NA, NA, NA, NA, "EFG", NA, "AAA"))

df
df$column\u non\u NA=行和(!is.NA(df[-1]))
df
Q1 Q1a Q1b Q1c列_non_NA
1是AAA BBB 2
2号0
3是AAA 1
四零
5是ABC BCD EFG 3
6是DDD 1
7是EEE AAA AAA 3

df$column\u non\u NA=行和(!is.NA(df[-1]))
df
Q1 Q1a Q1b Q1c列_non_NA
1是AAA BBB 2
2号0
3是AAA 1
四零
5是ABC BCD EFG 3
6是DDD 1
7是EEE AAA AAA 3

以下是使用
pmap
实现跨行应用函数效果的方法:

库(tidyverse)
df%
变异(
计数非数值=pmap(
.l=列表(Q1a、Q1b、Q1c),
.f=函数(…)和(!rlang::are_na(c(…))
)
)
#>Q1a Q1b Q1c计数不适用
#>1是AAA BBB 2
#>2号0
#>3是AAA 1
#>四零
#>5是ABC BCD EFG 3
#>6是DDD 1
#>7是EEE AAA AAA 3

由(v0.2.0)于2018年7月17日创建。

以下是使用
pmap
实现跨行应用函数效果的方法:

库(tidyverse)
df%
变异(
计数非数值=pmap(
.l=列表(Q1a、Q1b、Q1c),
.f=函数(…)和(!rlang::are_na(c(…))
)
)
#>Q1a Q1b Q1c计数不适用
#>1是AAA BBB 2
#>2号0
#>3是AAA 1
#>四零
#>5是ABC BCD EFG 3
#>6是DDD 1
#>7是EEE AAA AAA 3

由(v0.2.0)于2018-07-17创建。

df$column\u non\u NA=rowSums(!is.NA(df[-1]))
df$column\u non\u NA=rowSums(!is.NA(df[-1])
df$count_non_NA <- ifelse(df$Q1 == "No", 0,
                      ifelse(df$Q1 == "Yes" & !is.na(df$Q1a) & !is.na(df$Q1b) & !is.na(df$Q1c), 3,
                             ifelse(df$Q1 == "Yes" & ((!is.na(df$Q1a) & !is.na(df$Q1b)) | 
                                      (!is.na(df$Q1b) & !is.na(df$Q1c))|
                                      (!is.na(df$Q1a) & !is.na(df$Q1c))), 2, 1)))
df$column_non_NA= rowSums(!is.na(df[-1]))
df
   Q1  Q1a  Q1b  Q1c column_non_NA
1 Yes  AAA  BBB <NA>             2
2  No <NA> <NA> <NA>             0
3 Yes  AAA <NA> <NA>             1
4  No <NA> <NA> <NA>             0
5 Yes  ABC  BCD  EFG             3
6 Yes  DDD <NA> <NA>             1
7 Yes  EEE  AAA  AAA             3