我尝试使用R来隔离数据帧中单个列中的值,然后将行n的值与行n-1进行比较。如果行n等于行n-1,我想删除该行。例如:
ID Time1 Time2
1 6 7
2 5 8
3 5 9
4 6 6
对于此示例,仅关注列Time1。我想删除观察3,因为此观察中的Time1的值与观察2中的相同。但是,我不想删除观察4,即使这里的Time1的值与观察1中的相同.I需要把重点放在观察n和观察n-1之间的比较上,而不是任何其他观察之前的比较。是否有一种简单的方法可以在R中完成这项工作?谢谢!
答案 0 :(得分:1)
使用dplyr
的选项:
library(dplyr)
df %>% dfplyr::filter( Time1 != lag(Time1, default = -Inf))
# ID Time1 Time2
# 1 1 6 7
# 2 2 5 8
# 3 4 6 6
数据:强>
df <- read.table(text =
"ID Time1 Time2
1 6 7
2 5 8
3 5 9
4 6 6",
header = TRUE)
答案 1 :(得分:0)
您可以将Time1
的延迟添加到数据框,然后过滤掉Time1 == Time1_lag
的行。
以下是基于R:
的方法df <- data.frame(ID = 1:4, Time1 = c(6, 5, 5, 6), Time2 = c(7, 8, 9, 6))
# Remove the last observation and put an NA for the first one to create the lag
df$Time1_lag <- c(NA, df$Time1[-nrow(df)])
# need to worry about the NA in the first row, so add an extra condition
df[df$Time1 != df$Time1_lag | is.na(df$Time1_lag), ]
以下是使用dplyr
包执行此操作的方法:
library(dplyr)
df <- data.frame(ID = 1:4, Time1 = c(6, 5, 5, 6), Time2 = c(7, 8, 9, 6))
df %>% mutate(Time1_lag = lag(Time1)) %>% filter(Time1 != Time1_lag | is.na(Time1))
答案 2 :(得分:0)
评论中的代码说明
$(".remove-item").on("click", function() {
getSum();
alert("This Onclick is working");
});
在里面工作
df[!c(TRUE, diff(df$Time1)) == 0, ]