R data.table 列,沿其他列中的唯一值计数

Mar*_*ark 0 r data.table tidyr

我有一些长格式的数据,我想使其变宽。问题是数据的格式没有一条信息可以轻松传播。为了解决这个问题,我必须在数据框中创建一列,从 1 到另一列中每个唯一条目的长度。

在下面的过程中,是否有使列“fid”的 data.table 方法?

library(data.table)
library(tidyverse)

# data:
df <- data.frame(class = c('1', '1', '1', '2', '3', '3'),
                 A = 1:6,
                 B = 11:16)

# create counting column
df <- df %>% group_by(class) %>% mutate(fid=1:n())

# spread using dcast
dcast(setDT(df), class ~ fid, value.var = c("A", "B")) 
Run Code Online (Sandbox Code Playgroud)

干杯

hpe*_*626 5

另一种方法是使用data.table::rowid.

df[,fid := rowid(class)]
Run Code Online (Sandbox Code Playgroud)