计算r

时间:2019-03-05 05:16:34

标签: r

我有两个数据帧(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)

但这向我显示了更改,但没有数字!

谢谢

2 个答案:

答案 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