当从另一个数据中减少数据时,我希望将差异和值的差异存储到另一个数据帧中。
例如,给定此数据集:
> change
water water2
1 1 1
2 1 2
3 1 2
4 1 1
5 2 2
6 6 4
7 5 4
8 7 5
9 8 9
10 5 5
11 4 2
12 5 5
13 3 3
14 3 3
15 0 2
16 0 0
17 0 0在执行此计算时:
water2-water当存在负值差异时,如water > water2,则分配值-1。当存在正差异时,例如water < water2指定值1,否则,如果没有差异,则分配值0。
不过,我更希望在两个数据文件是独立的,而不是在一个数据中时这样做,这样:
y2010 <- water2
y2019 <- water我正在使用一个更大的dataframe,并且希望执行上面这样的计算,并将这些差异存储在一个新的dataframe中。
可复制的例子:
y2010 <- structure(list(water = c(1, 1, 1, 1, 2, 6, 5, 7, 8, 5, 4, 5,
3, 3, 0, 0, 0)), class = "data.frame", row.names = c(NA, -17L
))
y2019 <- structure(list(water2 = c(1, 2, 2, 1, 2, 4, 4, 5, 9, 5, 2, 5,
3, 3, 2, 0, 0)), class = "data.frame", row.names = c(NA, -17L
))发布于 2021-01-21 18:28:20
您可以使用sign函数。如果差异为正,它返回1,则返回-1,如果是0,则返回0:
df <- data.frame(change = sign(y2019$water2 - y2010$water))
change
1 0
2 1
3 1
4 0
5 0
6 -1
7 -1
8 -1
9 1
10 0
11 -1
12 0
13 0
14 0
15 1
16 0
17 0发布于 2021-01-21 18:28:58
你也可以尝试:
#Code
ydiff <- y2019$water2-y2010$water
index <- y2010$water>y2019$water2
index2 <- y2010$water<y2019$water2
ydiff[index]<--1
ydiff[index2]<-1
ydiff[!index & !index2]<-0
#Dataframe
df3 <- data.frame(ydiff=ydiff)输出:
df3
ydiff
1 0
2 1
3 1
4 0
5 0
6 -1
7 -1
8 -1
9 1
10 0
11 -1
12 0
13 0
14 0
15 1
16 0
17 0https://stackoverflow.com/questions/65833499
复制相似问题