gpt4 book ai didi

r - 如何重复空行以使每个拆分具有相同的编号

转载 作者:行者123 更新时间:2023-12-04 11:03:56 28 4
gpt4 key购买 nike

我的目标是为每个拆分获得相同数量的行(基于列 Initial)。我试图基本上填充行数,以便每个人都有相同的数量,同时保留初始列,以便我可以区分它们。我的尝试完全失败了。有人有建议吗?

df<-data.frame(Initials=c("a","a","b"),data=c(2,3,4))
attach(df)

maxrows=max(table(Initials))+1
arr<-split(df,Initials)
lapply(arr,function(x){
toadd<-maxrows-dim(x)[1]
replicate(toadd,x<-rbind(x,rep(NA,1)))#colnames -1 because col 1 should the the same Initial
})

目标:
a 2
a 3
b 4
b NA

最佳答案

使用数据表...

my_rows <- seq.int(max(tabulate(df$Initials)))

library(data.table)
setDT(df)[ , .SD[my_rows], by=Initials]

# Initials data
# 1: a 2
# 2: a 3
# 3: b 4
# 4: b NA
.SD小号 的子集D 与每个 by= 相关联的数据团体。我们可以对它的行进行子集,如 .SD[row_numbers] , 不像 data.frame 需要一个额外的逗号 DF[row_numbers,] .

dplyr 中的类似物是
my_rows <- seq.int(max(tabulate(df$Initials)))

library(dplyr)
setDT(df) %>% group_by(Initials) %>% slice(my_rows)

# Initials data
# (fctr) (dbl)
# 1 a 2
# 2 a 3
# 3 b 4
# 4 b NA

奇怪的是,这只适用于 df是一个数据表。我已提交 a report/query with dplyr . dplyr 开发人员很有可能会在 future 的版本中阻止这种用法。

关于r - 如何重复空行以使每个拆分具有相同的编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33045115/

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