【问题标题】:How to fill a range of cells within a column with particular values?如何用特定值填充列中的一系列单元格?
【发布时间】:2022-01-22 09:27:48
【问题描述】:

我在R 中有一个df,对 24 个变量进行了 15,767 次观察。下面是一个可重现的例子:

data <- data %>% add_column(year = NA)

我现在想用某些值填充该列。特别是,我想将“2011”添加到第 1 到 18 行,将“2012”添加到第 19 到 200 行,依此类推。最简单的方法是什么?我在网上找不到简单的解决方案。

【问题讨论】:

  • 这个例子不是一个可重现的例子。您需要与 dput(head(data)) 共享您的数据集的可重现样本,以便为贡献者提供可以帮助您的东西。

标签: r dataframe


【解决方案1】:

这很难重现,但如果你有

newvals <- data.frame(
  year = c(2011L, 2012L),
  lengths = c(18, 182)
)
rep(newvals$year, times = newvals$lengths)
#   [1] 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011
#  [19] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
#  [37] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
#  [55] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
#  [73] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
#  [91] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
# [109] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
# [127] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
# [145] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
# [163] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
# [181] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
# [199] 2012 2012

(没有严格的理由以data.frame 开头,它适用于文字,例如rep(2011:2012, times = c(18, 182)),但有时框架是可视化/编辑/维护此类内容的便捷方式。交给你.)

我怀疑应该存在更好的方法,但作为实际数据的条件。

【讨论】:

    【解决方案2】:

    也许是这样的?

    library(dplyr)
    
    # define your vector
    my_vec = c(rep(2011, 18), rep(2012, 200-19))
    
    # fill example dataframe with 1000 rows with your vector:
    
    tibble(col1 = 1:1000) %>% 
      add_column(year = rep_len(my_vec, length.out = nrow(.)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多