我正在处理一个数据集,该数据集具有4列,这些列表示何时切割了某个森林补丁。
其中三列代表一年,每一行代表一个月。例如,栏:2015,行:1 = 2015年1月
最后一列是每个站点的唯一ID。
为了进行分析,我需要对数据进行重组,以使其成为2行,网站和剪切的日期格式。由于我们不知道确切的日期,我们选择了每月的15号作为代理。
我已附上数据照片和摘要。
我想要的最终结果是这样的
uniqueid <- c(21000, 23400, 26800)
cut <- as.Date(c('2015-1-15','2016-3-15','2017-3-15'))
stack_example <- data.frame(uniqueid, cut)
有人可以帮我重组数据,就像示例输出一样吗?
非常感谢你
<<<<编辑阿库伦>>>>>
dput(head(clf))
结构(列表(X2017 = c(NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_),X2016 = c(NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_ ,NA_integer_,NA_integer_,NA_integer_ NA_integer_,NA_integer_),idunique = 1:6),row.names = c(NA,6L),class =“ data.frame”)
我们可以pivot_longer
使用转换为长格式,然后使用paste
orstr_c
或sprintf
library(dplyr)
library(tidyr)
library(stringr)
clf %>%
pivot_longer(cols = -idunique, values_drop_na = TRUE,
names_to = 'date', values_to = 'value') %>%
transmute(idunique, cut = sprintf('%s-%02d-15',
str_remove(date, '^X'), value))
# A tibble: 1 x 2
# idunique cut
# <int> <chr>
#1 3 2017-03-15
# OP's dput showed all rows NA. So, added a value for test
clf$X2017[3] <- 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句