如何解决基于 R 中的值的传播记录
我在仅根据 ID 传播数据时遇到问题 假设我有这个数据框
DF <- data.frame(ID=rep(c("1","2","3","1","1"),each=1),m=c(7,7,8,8),n=c(8,9,10,11),o=c(121,122,123,121,122),p=c(23,24,25,25)
)
然后,我想根据ID传播它。这是我期望的输出
DFR <- data.frame(ID=rep(c("1","3"),m1=c(7,7),n1=c(8,10),o1=c(121,123),p1=c(23,25),m2=c(8,0),n2=c(9,o2=c(121,p2=c(25,m3=c(8,n3=c(11,o3=c(122,p3=c(25,0)
)
我尝试了一些代码,但大部分都失败了,例如
DF %>% fill(-ID) %>%
spread(key=m:p,value=m:p,sep="",fill="");
chop(DF,ID) %>%
spread(DF,m:p) %>%
unnest(c(m:p));
DF %>% group_by(ID) %>%
select(ID) %>%
mutate(row = paste0("m","n","o","p",row_number())) %>%
spread(row,m,n,o,p);
任何解决方案将不胜感激。提前致谢
解决方法
您可以使用:
library(dplyr)
library(tidyr)
DF %>%
group_by(ID) %>%
mutate(row = row_number()) %>%
pivot_wider(names_from = row,values_from = m:p,values_fill = 0)
# ID m_1 m_2 m_3 n_1 n_2 n_3 o_1 o_2 o_3 p_1 p_2 p_3
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 7 8 8 8 9 11 121 121 122 23 25 25
#2 2 7 8 0 9 10 0 122 122 0 24 25 0
#3 3 7 0 0 10 0 0 123 0 0 25 0 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。