如何解决在R中带来长而广泛的数据而不会丢失值
您好,我正在尝试使用spread()
函数将数据从长格式转换为宽格式。实际上它是可行的,但是它为我提供了一半的数据帧,其中每个转换列的NA都为NA。
我的数据框的一个最小示例:
Trial <- c(1,2,3,4,5,6,1,6)
Period <- c(4,6)
variable <- c("SpotRate","SpotSpread")
value <- c(0.5,0.4,0.2,0.3,0.6)
df <- cbind(Trial,Period,variable,value)
Wide_data <- spread(df,value,convert=TRUE)
我想将变量转换成两列“ SpotRate”和“ SpotSpread”以及相应的值。这是可行的,但是其他变量的每个值都在其中两次(Trial,Period等),SpotRate和SpotSpread列的一半用NA填充。如何将R转换为宽数据后告诉R将所有重复值合并为一个?
谢谢! :)
解决方法
也许您正在寻找这个:
library(tidyverse)
#Data
Trial <- c(1,2,3,4,5,6,1,6)
Period <- c(4,6)
variable <- c(rep("SpotRate",6),rep("SpotSpread",6))
value <- c(0.5,0.4,0.2,0.3,0.6)
df <- as.data.frame(cbind(Trial,Period,variable,value),stringsAsFactors = F)
#Code
df %>%
arrange(Trial) %>%
group_by(Trial) %>%
pivot_wider(names_from = variable,values_from=value) %>% ungroup()
输出:
# A tibble: 6 x 4
Trial Period SpotRate SpotSpread
<chr> <chr> <chr> <chr>
1 1 4 0.5 0.4
2 2 5 0.4 0.2
3 3 6 0.2 0.3
4 4 4 0.3 0.6
5 5 5 0.6 0.5
6 6 6 0.5 0.4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。