我有两个数据帧(Before_data和After_data)。这是我的数据样本
# Before_data
P1 P2 P3 P4 P5 P6 P7 P8
90000 80000 90000 80000 60000 61399 NA NA
80300 80000 80000 91903 30000 80300 NA NA
30000 80300 30000 80300 39999 30701 39999 90900
90900 90000 90000 90000 NA NA NA NA
80300 90900 80000 80000 80000 80000 80300 80300
# After_data
P1 P2 P3 P4 P5 P6 P7 P8
90000 80000 90000 80000 60000 61399 80300 80300
80300 80000 80000 91903 30000 80300 NA NA
90000 90000 90000 NA NA NA NA NA
90000 100703 90000 99999 90300 100101 99999 31505
80300 80000 40101 90900 40101 40100 80000 80300
我想查看每两行之间的更改数量(例如,Before_data的第1行和After_data的第1行之间。结果等于2)。
如果我们比较Before_data中的第2行和After_data中的第2行,则结果为0。
我尝试了以下
library(daff)
Before_data <-read.csv("Before_data .csv")
After_data<-read.csv("After_data.csv")
diff_data(Before_data, After_data)
dd <- diff_data(Before_data, After_data)
summary(dd)
write_diff(dd, "diff.csv")
render_diff(dd)
但这向我显示了更改,但没有数字!
谢谢
答案 0 :(得分:3)
@Gregor的回答略有不同:
ncol(Before_data) - rowSums(Before_data == After_data | is.na(Before_data) & is.na(After_data))
答案 1 :(得分:2)
这应该有效:
rowSums(Before_data != After_data, na.rm = TRUE) +
rowSums(is.na(Before_data) & !is.na(After_data)) +
rowSums(!is.na(Before_data) & is.na(After_data))
很容易分辨出非NA值何时更改,我们可以使用!=
。我们必须对NA
更加谨慎,因为NA != NA
会给NA
。