我有以下数据框:
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
关于如何产生上述输出的任何想法?
谢谢!
答案 0 :(得分:0)
如果我理解了您的问题,您想在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)]