r - 如果包含字符串,则按一列分组并获取 R 中另一列的最大值
问题描述
给定如下数据框:
df <- structure(list(city = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 1L,
1L), .Label = c("bj", "sh"), class = "factor"), type = structure(c(3L,
1L, 3L, 1L, 4L, 2L, 4L, 2L), .Label = c("buy_area", "buy_price",
"sale_area", "sale_price"), class = "factor"), value = c(1200L,
800L, 1900L, 1500L, 15L, 10L, 17L, 9L)), class = "data.frame", row.names = c(NA,
-8L))
出去:
如何从:和分别包含value
的 2 种类型的列中获取最大值。type
area
price
预期结果将是两个值:1900
对于area和17
for price。
要分组type
并获得最大的value
s 我们可以使用:
ddply(df, .(variable), summarise, max.value = max(value))
更新: @det 解决方案的输出:
解决方案
创建分类type
为区域或价格的列并按该列分组:
df %>%
mutate(
type2 = case_when(
str_detect(type, "_area$") ~ "area",
str_detect(type, "_price$") ~ "price",
TRUE ~ NA_character_
)
) %>%
group_by(type2) %>%
summarise(max_value = max(value))
输出:
type2 max_value
<chr> <int>
1 area 1900
2 price 17
推荐阅读
- r - 按列表名称应用函数
- ios - 重置分数按钮 iOS
- reactjs - 即使使用确切的路径,React Router v4 也无法正常工作
- keycloak - 如何在 keycloak 领域重定向 URL 中传递动态 IP 地址?
- linux - 守护进程如何在不使用内存的情况下保持活动状态?
- aop - 我们可以在使用 AspectJ 加载时间编织时定义编织顺序吗?
- mapbox - 在本地运行 mapbox-gl-js(无法提供调试页面)
- javascript - 在 javascript 中调用多个 ID 的可能性的更好方法?
- c# - WPF 设计时属性
- c# - Windows窗体中检查DrawItemState等价的条件表达式是什么意思?