r - 比较中的 DPLYR 不同的排除列但保留结果?
问题描述
我有一个类似于这个结构的data.frame:
a b c
1 1 A
1 1 A
1 1 BLAH
2 2 BLAH
2 3 C
df <- data.frame(a=c(1,1,1,2,2),b=c(1,1,1,2,3), c=c("A","A","BLAH","BLAH", "C"))
我只需要根据变量“a”和“b”对不同的数据进行子集化,但在结果中保留变量“c”-但带有一个条件。如果有重复,只保留不等于“BLAH”值的版本。
输出应如下所示:
1 1 A
2 2 BLAH
2 3 C
所以我有一个不同的子集并选择丢弃“BLAH”版本?另外,请注意,我只保留了所需的“1 1 A”行之一。
解决方案
df %>%
group_by(a, b) %>%
summarize(c = c[max(1, which(c != "BLAH"))][1]) %>%
ungroup()
## A tibble: 3 x 3
# a b c
# <dbl> <dbl> <fct>
#1 1 1 A
#2 2 2 BLAH
#3 2 3 C
推荐阅读
- material-ui - 我在使用 Matrial ui 图标时遇到了一些问题
- next.js - Next.js 动态路由模板
- javascript - 警告:无法在尚未安装的组件上调用 setState。调用 API 时
- go - 在 Go 中将 Athena 输出转换为强类型模型
- google-colaboratory - 我无法在 google colab 中授权 gmail api 应用程序
- c++ - C++20 中的新型自动生成构造函数
- python - 同步异步队列
- c# - 从全局操作过滤器 .net 核心重定向到操作
- python - 从 Scikit-Learn 决策树模型中获取特定数据
- ruby - 有人可以用 Ruby 正则表达式帮助我检查任何以 t 开头并以 r 结尾的字母并用单词 Twitter 替换的单词吗?谢谢