【发布时间】:2020-10-17 20:58:03
【问题描述】:
我有一个如下的数据框:
library(dplyr)
df <- data.frame(A=1:20,
B=c(2,1.8,1.6,1.8,4,6,8,10,12,10,8,6,13,14,15,16,16.5,15,14,13))
mutate(df, C = B - lag(B))
A B C
1 2.0 NA
2 1.8 -0.2
3 1.6 -0.2
4 1.8 0.2
5 4.0 2.2
6 6.0 2.0
7 8.0 2.0
8 10.0 2.0
9 12.0 2.0
10 10.0 -2.0
11 8.0 -2.0
12 6.0 -2.0
13 13.0 7.0
14 14.0 1.0
15 15.0 1.0
16 16.0 1.0
17 16.5 -0.5
18 15.0 -1.0
19 14.0 -1.0
20 13.0 -1.0
我想提取出连续有 3 个或更多的负值序列并放在单独的列中。例如,将 (col C) 第 10、11、12 行的值放在新列中,将第 17、18、19、20 行的值放在另一个新列中。这个数据框很大,所以我不知道我会有多少新列。任何帮助,将不胜感激。谢谢
【问题讨论】:
-
你想只为C列还是每列都这样做?
-
是的,只有 C 列
-
@akrun - 你的意思是连续超过 3 个值吗?如果是这样,那将是一个新的数据列
-
抱歉,B col 应该是 16.5 - 我现在已经在那里更新了。非常感谢
标签: r dataframe dplyr data-extraction