我有数据加载到数据框中
unitid date_time sensor sample
b0a25 10/1/2015 5:34 1 0
b0a25 10/1/2015 5:34 3 0
b0a25 10/1/2015 5:34 6 22
b0a25 10/1/2015 5:34 7 35
b0a25 10/1/2015 5:35 1 0
b0a25 10/1/2015 5:35 3 0
b0a25 10/1/2015 5:35 6 22
b0a25 10/1/2015 5:35 7 35
b0a25 10/1/2015 5:36 1 0
b0a25 10/1/2015 5:36 3 0
b0a25 10/1/2015 5:36 6 37
b0a25 10/1/2015 5:36 7 56
我尝试使用mutate()函数将数据保存在单独的列中
df<- group_by(data1, unitid) %>%
arrange(datee_time) %>%
mutate(sensor1 = lag(sensor,1), sensor3 = lag(sensor,3),sensor6 = lag(sensor,6),sensor7 = lag(sensor,7))%>%
group_by(unitid, sample_time_conv)
我出去了
unitid date_time sensor sample sensor1 sensor3 sensor7 sensor9
b0a25 10/1/2015 5:34 1 0 7 3 6 3
b0a25 10/1/2015 5:34 3 0 1 6 7 6
b0a25 10/1/2015 5:34 6 22 3 7 1 7
b0a25 10/1/2015 5:34 7 35 6 1 3 1
等等。这是不正确的。
预期输出应为
unitid date_time sensor1 sensor3 sensor6 sensor7
b0a25 10/1/2015 5:34 0 0 22 35
b0a25 10/1/2015 5:35 0 0 22 35
b0a25 10/1/2015 5:36 0 0 37 56
先谢谢。
答案 0 :(得分:0)
这可以通过tidyr
中的扩散函数来完成df %>% mutate(sensor=paste("sensor",sensor)) %>% spread(sensor,sample)
答案 1 :(得分:0)
这可以使用reshape()完成,如下面的解决方案
samplereshape<-reshape(data1,v.names="sample",idvar="date_time",timevar="sensor",direction="wide")
使用colnames重命名列。