【问题标题】:Replacing last n rows of a column in a dataframe with values from a column in a smaller dataframe用较小数据框中列的值替换数据框中列的最后 n 行
【发布时间】:2020-08-04 17:57:08
【问题描述】:

假设我有 2 个单独的数据框,一个有 10 行数据,一个有 5 行数据。假设我想用数据框 2 的特定列中的值替换数据框 1 的特定列中的最后 5 行数据。我该怎么做?

为简单起见,假设此示例中有两个只有 1 列的数据框

vect1<- c(1:10)
vect2<- c(11:15)

as.data.frame(vect1)
as.data.frame(vect2)

如何将向量 1 中的最后 5 个值替换为向量 2 中的 5 个值?所以输出将是 1、2、3、4、5、11、12、13、14、15。非常感谢任何帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    它对你有用吗?

    > vect1_df <- data.frame(vect1)
    > vect2_df <- data.frame(vect2)
    > vect1_df$vect1[6:10] <- vect2_df$vect2
    > vect1_df
       vect1
    1      1
    2      2
    3      3
    4      4
    5      5
    6     11
    7     12
    8     13
    9     14
    10    15
    

    【讨论】:

      【解决方案2】:
      vect1<- c(1:10)
      vect2<- c(11:15)
      
      
      vect1[6:10] = vect2
      

      这将使 vect1 的最后 5 位数字被替换为 vect2

      > vect1
       [1]  1  2  3  4  5 11 12 13 14 15
      

      【讨论】:

        【解决方案3】:

        我们可以在使用tail 指定行索引的同时使用replace 将这些元素替换为第二个向量

        vec1new <- replace(vect1, tail(seq_along(vect1), 5), vect2)
        vec1new
        #[1]  1  2  3  4  5 11 12 13 14 15
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-12
          • 2020-04-22
          • 2018-02-11
          • 2018-09-29
          • 1970-01-01
          • 2016-01-07
          相关资源
          最近更新 更多