【发布时间】:2020-11-18 18:53:23
【问题描述】:
所以我正在尝试设置我的数据集以进行事件历史分析,为此我需要定义一个新列。我的数据集是以下形式:
ID Var1
1 10
1 20
1 30
1 10
2 4
2 5
2 10
2 5
3 1
3 15
3 20
3 9
4 18
4 32
4 NA
4 12
5 2
5 NA
5 8
5 3
我想得到以下表格:
ID Var1 Var2
1 10 0
1 20 0
1 30 1
1 10 0
2 4 0
2 5 0
2 10 0
2 5 0
3 1 0
3 15 0
3 20 1
3 9 0
4 18 0
4 32 NA
4 NA 1
4 12 0
5 2 NA
5 NA 0
5 8 1
5 3 0
所以用文字来表示:我希望新变量表明,如果Var1 的值(相对于组)下降到Var1 达到该组的最大值的 50% 以下。最后一个值是 NA 还是 0 并不重要,尽管从理论角度来看NA 会更有意义。
我试过使用类似的东西
DF$Var2 <- df %>%
group_by(ID) %>%
ifelse(df == ave(df$Var1,df$ID, FUN = max), 0,1)
然后将其滞后 1,但它在 ifelse 中未使用的参数 1 上返回错误。
感谢您的解决方案!
【问题讨论】:
-
您的预期输出是否正确?试试
df %>% group_by(ID) %>% mutate(Var2 = as.integer(Var1 > 0.5*max(Var1)))
标签: r if-statement plyr calculated-columns