如何解决使用pivot_wider或其他解决方案在R中输出我的数据集
我还是R的新手,但在帮助下取得了进步 在这个群体中。我正在努力解决自己认为的问题 可以用pivot_wider解决,尽管我还没有成功。 预先感谢您的协助!
我有一个数据集,如下所示:
RaceNum Horse DrawA row_c
<int> <chr> <dbl> <int>
1 21127 A'Ali -0.242 1
2 20260 A'Ali 0.128 2
3 17889 A'Ali NA 3
4 21712 A'Shamardi -0.519 1
5 20340 A'Shamardi 0.767 2
6 5285 A Bit Of A Touch NA 1
7 4825 A Bit Of A Touch -0.0256 2
8 4207 A Bit Of A Touch 0.139 3
9 3397 A Bit Of Ginger 0.704 1
10 3206 A Bit Of Ginger 0.152 2
# ... with 64,290 more rows
我的目标是创建如下输出:
Horse DrawA_1 DrawA_2 DrawA_3
A'Ali -0.242 0.128 NA
A'Shamardi -0.519 0.767 NA
A Bit of a Touch NA -0.0256 0.139
etc
基本上,对于每匹马,我需要输出3的DrawA值 实例。 也许ivot_wider不是执行此操作的最佳方法? 我试图使用group_by(Horse)输出我需要的东西,然后 使用摘要可在4列宽的数据集中显示输出。 希望有人能帮忙!
解决方法
如果使用pivot_wider
作为名称,则可以很容易地在数据上使用row_c
。这是一些简单数据的例子。
library(tidyr)
df <- data.frame(Horse = c("A","A","B","B"),DrawA = runif(5),row_c = c(1:3,1:2))
pivot_wider(df,names_from = row_c,names_prefix = "DrawA_",values_from = DrawA)
#> # A tibble: 2 x 4
#> Horse DrawA_1 DrawA_2 DrawA_3
#> <chr> <dbl> <dbl> <dbl>
#> 1 A 0.979 0.153 0.427
#> 2 B 0.853 0.210 NA
,
Base R解决方案:
df1 <- as.data.frame.matrix(xtabs(DrawA~Horse+row_c,df))
within(setNames(df1,paste0("DrawA_",names(df1))),{horse <- row.names(df1)})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。