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

标签 r dataframe

我的目标是为每个拆分获得相同数量的行(基于列 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/

相关文章:

r - KNNCAT错误 "some classes have only one member"

javascript - R plotly : how to observe whether a trace is hidden or shown through legend clicks with multiple plots

python - 使用 pd.read_csv 打开 CSV 文件 - 上下文管理器的任何目的?

python - 将 2 列数据框转换为多级分层数据框

R - 通过随机选择组成的数据帧来创建新的数据帧

python - Pandas DataFrame 转置索引和列

R:在数据框中将分数转换为小数

class - 变量的类型和类别

python - 删除与小于指定大小的组对应的行

r - 不平衡的训练数据集和回归模型