我有一个看起来像这样的数据集
Subject Year X Y
A 1990 1 0
A 1991 1 0
A 1992 2 0
A 1993 3 1
A 1994 4 0
A 1995 4 0
B 1990 0 0
B 1991 1 0
B 1992 1 0
B 1993 2 1
C 1991 1 0
C 1992 2 0
C 1993 3 0
C 1994 3 0
D 1991 1 0
D 1992 2 0
D 1993 3 0
D 1994 4 0
D 1995 5 0
D 1996 5 1
D 1997 6 0
如何创建两个额外的列
data$A1 <- as.numeric(data$X >4)
但是,它不是我想要的。结果:
Subject Year X A1 Y A2
A 1990 1 1 0 0
A 1991 1 0 0 0
A 1992 2 1 0 0
A 1993 3 1 1 0
A 1994 4 1 0 0
A 1995 4 0 0 0
B 1990 0 0 0 0
B 1991 1 0 0 0
B 1992 1 0 0 0
B 1993 2 0 1 0
C 1991 1 0 0 0
C 1992 2 0 0 0
C 1993 3 0 0 0
C 1994 3 0 0 0
D 1991 1 1 0 1
D 1992 2 1 0 1
D 1993 3 1 0 1
D 1994 4 1 0 1
D 1995 5 1 0 1
D 1996 5 0 1 0
D 1997 6 1 0 0
没有变量A1和A2的Rawdata:
> dput(data)
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), Y = c(0L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L)), .Names = c("Subject",
"Year", "X", "Y"), class = "data.frame", row.names = c(NA, -21L
))
答案 0 :(得分:2)
我们可以使用f = File.new("hello.txt", 'w+')
f.puts "Hello World"
f.rewind
text = f.read.strip
puts "It works" if text == "Hello World"
data.table
答案 1 :(得分:1)
那可以胜任吗?你需要结构作为因素吗?下面的代码还没有意识到结构的变化,例如从C到D.
mydata <- structure("Your code here")
mydata$max <- rep(F, nrow(mydata))
mydata$A1 <- rep(0, nrow(mydata))
mydata$A2 <- rep(0, nrow(mydata))
for (i in unique(mydata$Subject)) {
max <- max(mydata$X[mydata$Subject == i])
if (max >=3) {
mydata$max[mydata$Subject == i] <- T
}
}
mydata$A1 <- ifelse(mydata$max & c(F,diff(mydata$X) > 0), 1, 0)
A2仍然不清楚(另见我的编辑)。希望这有助于完成其余的工作。