r - r - 删除数据框中每个主题的第一行条件
问题描述
我有一个长格式数据框,其中包含多个主题和每个主题的多个条件。我想为所有科目删除每个条件的第一行(第一个除外)。我的数据框如下所示:
> df <- data.frame(subj = c(rep(1,4),rep(2,4), rep(3,4)), cond = (rep(c("A", "A", "B", "B"),times=3)), value = round(runif(12, min = 0, max = 10)))
> df
subj cond value
1 A 1
1 A 5
1 B 3
1 B 10
2 A 6
2 A 5
2 B 2
2 B 0
3 A 5
3 A 8
3 B 5
3 B 2
我找到了 duplicated() 函数,但它只删除了第一个主题的每个条件的第一行:
df <- df[duplicated(df$cond),]
subj cond value
1 A 5
1 B 10
2 A 6
2 A 5
2 B 2
2 B 0
3 A 5
3 A 8
3 B 5
3 B 2
有没有办法在新主题开始时“重置”重复的发现?我怎样才能阻止它排除第一个条件的第一行?
非常感谢大家!
解决方案
您可以使用两个变量的重复交互进行子集化:
> df
subj cond value
1 1 A 5
2 1 A 7
3 1 B 4
4 1 B 8
5 2 A 5
6 2 A 2
7 2 B 8
8 2 B 5
9 3 A 8
10 3 A 1
11 3 B 1
12 3 B 5
df1 <- df[!duplicated(interaction(df$subj, df$cond)),]
> df1
subj cond value
1 1 A 5
3 1 B 4
5 2 A 5
7 2 B 8
9 3 A 8
11 3 B 1
编辑:
我再次阅读了您的问题,您似乎想删除第一行,而不是最后一行。在这种情况下,使用
df1 <- df[!duplicated(interaction(df$subj, df$cond), fromLast = TRUE),]
> df1
subj cond value
2 1 A 4
4 1 B 9
6 2 A 9
8 2 B 7
10 3 A 1
12 3 B 2
推荐阅读
- java - JBoss EAP 6.4 中的队列查找
- c# - .net 框架中的 ImportPkcs8PrivateKey 和 ImportRSAPrivateKey 替代方案
- c# - 从查找中获取最大值
- bash - CircleCi 和 CodeCov:“<”运算符保留供将来使用
- android - Crash OutOfMemory Canvas:在使用 Glide 4 显示带有过渡 crossFade 的图像时尝试使用回收的位图
- java - Android Java:倒计时在一个活动中开始,在另一个活动中结束。可以吗?
- javascript - 如何在 html 中制作一个元素而不是整行
- awk - 如何使用 awk 根据匹配模式打印数字索引?
- java - 使用默认服务帐户的 Hangout Chat API 身份验证失败
- java - Spring Keycloak Adapter 为每个请求加载 Open-ID 配置