我有一个看起来像这样的数据集:
set ID v1
A1 222 1.86543
B1 222 2.98764
A1 234 3.76543
B1 234 4.87654
A1 235 1.98766
B1 235 6.98765
A1 21 1.98764
B1 21 7.7654
我正在尝试仅保留A1和B1的v1值之间的差异大于2的那些条目。我是R的初学者,并且没有尝试在此处显示的可靠代码。有人可以帮我吗?
谢谢。
对于此处发生的更改表示歉意。我在这里错误地显示了数据。我已经编辑了。
答案 0 :(得分:1)
看起来已经有人知道了,但是如果在两个方向上的差值都是2,也可以使用abs
函数。
library(tidyverse)
df <- tibble(
set = c("A1", "B1", "A1", "B1"),
ID = c(222, 222, 234, 234),
v1 = c(1.86543, 2.98764, 3.76543, 4.87654),
v2 = c(3.98765, 2.98764, 2.87643, 1.87653)
)
df %>%
filter(abs(v1 - v2) > 2)
答案 1 :(得分:0)
鉴于新的数据格式,您可以使用spread
函数
require(tidyverse)
df %>%
spread(set, v1) %>%
filter(abs(A1-B1) > 2)
结果:
ID A1 B1
1 21 1.98764 7.76540
2 235 1.98766 6.98765
数据:
df <- read.table(text = "set ID v1
A1 222 1.86543
B1 222 2.98764
A1 234 3.76543
B1 234 4.87654
A1 235 1.98766
B1 235 6.98765
A1 21 1.98764
B1 21 7.7654
", header = TRUE)