gpt4 book ai didi

r - 从长到宽的结构化 R Dataframe

转载 作者:行者123 更新时间:2023-12-02 06:55:17 24 4
gpt4 key购买 nike

我有一个日期框架:

long <- data.frame(subj = c(1,1,2,2,2), code = c("a", "b", "a", "d", "e"))

subj code
1 1 a
2 1 b
3 2 a
4 2 d
5 2 e

我似乎无法将数据结构化为 code 对每个 subj 和每个 code.n 重复 3 次> 是按时间顺序排列的代码。

因此:

   subj code.1 code.2 code.3
1 1 a b <NA>
2 2 a d e

感谢任何帮助。

最佳答案

我们为分组列“subj”创建一个序列列,然后执行dcast。我们可以使用 data.table 中的 dcast。将 'data.frame' 转换为 'data.table' (setDT(long)),按 'subj' 分组,创建序列列 'new' 并从 'long' reshape 为 'wide'使用 dcast

library(data.table)#v1.9.6+
setDT(long)[, new:=paste('code', 1:.N, sep='.'), by = subj]
dcast(long, subj~new, value.var='code')

或者这可以在使用 dplyr 方法创建序列列之后通过 tidyrspread 完成

library(dplyr)
library(tidyr)
long %>%
group_by(subj) %>%
mutate(new=paste('code', row_number(), sep='.')) %>%
spread(new, code)

关于r - 从长到宽的结构化 R Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32721106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com