【发布时间】:2016-07-14 19:50:38
【问题描述】:
我有一个看起来像这样的数据集:
Subject Year X
A 1990 1
A 1991 1
A 1992 2
A 1993 3
A 1994 4
A 1995 4
B 1990 0
B 1991 1
B 1992 1
B 1993 2
C 1991 1
C 1992 2
C 1993 3
C 1994 3
D 1991 1
D 1992 2
D 1993 3
D 1994 4
D 1995 5
D 1996 5
D 1997 6
我想为每个主题生成一个二进制 (0/1) 变量(假设变量 A),它指示 X 变量已达到 3(或 1-3)的天气。如果 X 变量已达到 4 或更多,则 A 不应捕获它。
应该是这样的:
Subject Year X A
A 1990 1 0
A 1991 1 0
A 1992 2 0
A 1993 3 0
A 1994 4 0
A 1995 4 0
B 1990 0 0
B 1991 1 0
B 1992 1 0
B 1993 2 0
C 1991 1 1
C 1992 2 1
C 1993 3 1
C 1994 3 1
D 1991 1 0
D 1992 2 0
D 1993 3 0
D 1994 4 0
D 1995 5 0
D 1996 5 0
D 1997 6 0
我尝试了以下方法:mydata$A<- as.numeric(mydata$X %in% 1:3)但它不能控制继续......
一个可重复的样本:
> dput(mydata)
structure(list(Subject = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("A",
"B", "C", "D"), class = "factor"), Year = c(1990L, 1991L, 1992L,
1993L, 1994L, 1995L, 1990L, 1991L, 1992L, 1993L, 1991L, 1992L,
1993L, 1994L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L
), X = c(1L, 1L, 2L, 3L, 4L, 4L, 0L, 1L, 1L, 2L, 1L, 2L, 3L,
3L, 1L, 2L, 3L, 4L, 5L, 5L, 6L)), .Names = c("Subject", "Year",
"X"), class = "data.frame", row.names = c(NA, -21L))
欢迎所有建议 - 谢谢!
【问题讨论】:
-
如果 x 的最大值为 3,那么 A 应该为 1?
-
如果主题
E的值为 2 和 3,您要标记它吗?还是必须是 1,2,3? 2,3,1... -
老实说,这个问题并不清楚。通过提供明确的问题帮助用户帮助您。
-
@SabDeM 请让我有什么不清楚的地方。我会尽量说清楚。
-
@zx8754 抱歉,我不清楚。 X 是一个累积变量。