【发布时间】:2020-06-24 16:07:50
【问题描述】:
我有一个关于数据准备的问题。我有以下数据集(长格式;每个测量点一行,因此每人几行):
dd <- read.table(text=
"ID time
1 -4
1 -3
1 -2
1 -1
1 0
1 1
2 -3
2 -1
2 2
2 3
2 4
3 -3
3 -2
3 -1
4 -1
4 1
4 2
4 3
5 0
5 1
5 2
5 3
5 4", header=TRUE)
现在我想创建一个新变量,该变量的行中为 1,其中此人的时间变量第一次发生符号更改,所有其他行中为 0。如果一个人在 time 上只有负值,则新变量上的 不应该是任何 1。对于在 time 上只有正值的人,第一行在新变量上应该有 1,所有其他行应该用 0 编码。对于我上面的示例,新数据框应该看起来像这个:
dd <- read.table(text=
"ID time new.var
1 -4 0
1 -3 0
1 -2 0
1 -1 0
1 0 1
1 1 0
2 -3 0
2 -1 0
2 2 1
2 3 0
2 4 0
3 -3 0
3 -2 0
3 -1 0
4 -1 0
4 1 1
4 2 0
4 3 0
5 0 1
5 1 0
5 2 0
5 3 0
5 4 0", header=TRUE)
有人知道怎么做吗?我考虑过使用 dplyr 和 group_by,但是我对 R 很陌生并且没有成功。非常感谢任何帮助!
【问题讨论】: