【问题标题】:Consecutive numbering of data.frame segments [duplicate]data.frame 段的连续编号[重复]
【发布时间】:2023-03-11 16:12:01
【问题描述】:

我想为我的 data.frame 段分配连续的数字。我试过这样:

library(plyr)
ex1 <- mtcars
ehh <- ddply(.data=ex1, .variables=c("cyl"), transform, brx_j = c(1:nrow(cyl)))

但这是一个“data.frame 中的错误(list(mpg = c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, : 参数暗示不同的行数:11, 0"。

我的错误是什么?

【问题讨论】:

  • 我认为你需要seq_along(cyl),如果你使用的是dplyr,那么ex1 %&gt;% group_by(cyl) %&gt;% mutate(brx_j = row_number())
  • length 替换nrow - mtcars$cyl 是向量,而不是矩阵
  • 甜蜜!你们是最棒的!

标签: r dataframe plyr


【解决方案1】:

我们需要seq_along 而不是1:nrow,因为“cyl”是单列而不是data.frame

ddply(.data=ex1, .variables=c("cyl"), transform, brx_j = seq_along(cyl))

dplyr一起,有row_number()函数可以得到'cyl'分组后的序列。

library(dplyr)
ex1 %>%
     group_by(cyl) %>% 
     mutate(brx_j = row_number())

【讨论】:

    【解决方案2】:

    这也可以(基础 R):

    ex1$brx_j <- ave(1:nrow(ex1), ex1$cyl, FUN=seq_along)
    ex1[order(ex1$cyl),]
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2021-10-12
      相关资源
      最近更新 更多