r - 在每个月的新列中添加相应的最大值
问题描述
我有以下数据框:
df <- structure(list(locality_id = structure(c(3L, 1L, 2L, 4L), .Label = c("L2762894",
"L3064193", "L6199859", "L8044094"), class = "factor"), month = structure(c(1L,
3L, 1L, 2L), .Label = c("1", "2", "3"), class = "factor"), prec01 = c(105,
109, 133, 79), prec02 = c(29, 34, 34, 35), prec03 = c(18, 48,
42, 184)), class = "data.frame", row.names = c(NA, -4L))
每个locality
都有precipitation
第一个的值three months
(prec01, prec02, prec03)
。
我想创建一个唯一的降水列,将每个月的相应降水值与相应的月份(列月)相匹配。结果如下:
# locality_id month prec
# 1 L6199859 1 105
# 2 L2762894 3 109
# 3 L3064193 1 133
# 4 L8044094 2 184
知道如何产生上述输出吗?
谢谢!
解决方案
如果我理解您的问题,您想在新prec
列中保留相应的值precXX
吗month
?
在那种情况下,在我看来,这个例子是不正确的,而应该是:
起始数据框:
locality_id month prec01 prec02 prec03
1 L6199859 1 105 29 18
2 L2762894 3 109 34 48
3 L3064193 1 133 34 42
4 L8044094 2 79 35 184
最终数据框:
locality_id month prec
1 L6199859 1 105
2 L2762894 3 48
3 L3064193 1 133
4 L8044094 2 35
您可以通过矩阵索引来实现:
i <- as.numeric(df$month)
df$prec <- df[,c(3,4,5)][cbind(seq_along(i), i)]
df[,c(-3,-4,-5)]
推荐阅读
- bash - 如何使用 awk 解析 Makefile
- extjs - ExtJs4 - 在运行时加载的 javascript multicombo 中定义的表单
- sql - 价值 = 0 而其他订单项 > 0
- machine-learning - 关于在 RNN (Keras) 中正确使用 dropout
- html - 悬停按钮不起作用
- c# - PostgreSql NPGSL 重复主键
- angular - Angular Observable - 多个订阅不会被捕获
- php - 在开发模式下使用laravel中的任何密码登录
- java - 使用通用代码进行 Java 单元测试
- titanium - Appcelerator Dynamic TableViewRow 标题仅在滚动后出现