【发布时间】:2018-12-16 23:29:28
【问题描述】:
如何操作数据集,如果一个变量给出某个输出,那么后续变量必须给出相同的输出?
我们认为 VAR1_2013 和 VAR1_2014 属于同一变量,分别在 2013 年和 2014 年测量。 VAR2_2013 和 VAR2_2014 是另一组变量,也分别在 2013 年和 2014 年测量。
我想写一个代码,如果早期的测量,即VAR1_2013和VAR2_2013被记录为“YES”,那么后续的测量也必须是“YES”。否则,我们将保持原样。
问题是我有 6 个变量 x 6 年,这意味着要操纵 36 个变量。
数据:
df <- read.table(text ="
ID VAR1_2013 VAR2_2013 VAR1_2014 VAR2_2014
1 YES NO NO NO
2 NO NO NO YES
3 NA YES NO NO
4 NO YES NA NA", header = TRUE, stringsAsFactors = FALSE)
我运行了以下代码,但显然它不可扩展。
代码:
library(dplyr)
df %>%
mutate(VAR1_2014 = if_else(!is.na(VAR1_2013) & VAR1_2013 == "YES", "YES", VAR1_2014),
VAR2_2014 = if_else(!is.na(VAR2_2013) & VAR2_2013 == "YES", "YES", VAR2_2014))
# ID VAR1_2013 VAR2_2013 VAR1_2014 VAR2_2014
# 1 1 YES NO YES NO
# 2 2 NO NO NO YES
# 3 3 <NA> YES NO YES
# 4 4 NO YES <NA> YES
【问题讨论】:
-
列名是否总是由“something”后跟一个数字后跟“_YYYY”组成?
-
您好,通常是变量名后跟“_YYYY”。所以,“STROKE_2013”、“STROKE_2014”...“STROKE_2018”
-
看看我的回答能否解决问题。我已经对其进行了编辑以更改第一个变量之后的几个变量。
标签: r dplyr data-manipulation tidyr purrr