【发布时间】:2019-11-04 15:06:20
【问题描述】:
我正在尝试根据单列数据的值更改我的数据框的格式,以表示另一列的重复序列。我的数据集由文件名、观察次数、日期和物种标识组成。使用数据集(见下文),我只设法绘制 n>0 的值,但我想保留零以概览比例而不丢失观察量。
我已经尝试过 tidyr::spread 函数,但我不想根据单个列的值创建新列。我希望根据第一个 (n) 的值重复其他列(例如,file.name、Date、ID)。 tidyr::melt 似乎对我也没有用...
这是一个例子:
call_obs <- data.frame("file.name" = c("pa0095au_001_180315_192129.wav", "pa0095au_002_180315_193134.wav", "pa0095au_003_180315_194133.wav", "pa0097au_002_180316_004647.wav", "pa0097au_003_180316_005646.wav"), "ID" = c("HW","None", "None", "HW", "HW"), "n" = c(1,0,0,3,2),"Date" = c('2018-03-15','2018-03-15','2018-03-15', '2018-03-16', '2018-03-16'))
我想要类似的东西
data.frame("file.name" = c("pa0095au_001_180315_192129.wav", "pa0095au_002_180315_193134.wav", pa0095au_003_180315_194133.wav", "pa0097au_002_180316_004647.wav", "pa0097au_002_180316_004647.wav", "pa0097au_002_180316_004647.wav", "pa0097au_003_180316_005646.wav", "pa0097au_003_180316_005646.wav"), "ID" = c("HW","None", "None", "HW", "HW", "HW", "HW", "HW"), "n" = c(1,0,0,1,1,1,1,1), "Date" = c('2018-03-15','2018-03-15','2018-03-15', '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16'))
日期为日期,file.name 为字符,ID 为因子,n 为数字
任何帮助都会很棒。
【问题讨论】:
-
类似
tidyr::uncount(call_obs, ifelse(n == 0, n + 1, n))
标签: r