首页 > 解决方案 > 根据R中的变量条件添加行

问题描述

我有 df 如下

df
ID   type  other-col
1    A1      cc
1    A2      dd
1    A3      cc
2    A1      cc
2    B1      aa
3    A2      aa

我想在“ID”随“type”和“other-col”列的F值变化时添加新的

new_df
ID
  df
    ID   type  other-col
    1    A1      cc
    1    A2      dd
    1    A3      cc
    1    F       F     <- this row added
    2    A1      cc
    2    B1      aa
    2    F       F      <- this row added
    3    A2      aa

我怎么能在 R 中做到这一点?谢谢

标签: r

解决方案


一旦您知道每个更改发生位置的索引,这应该可以在单个替换操作中实现。例如:

idx <- match(unique(df$ID), df$ID)[-1] - 1

df <- df[sort(c(sequence(nrow(df)),idx)),]
df[seq_along(idx) + idx, c("type","other_col")] <- "F"

#    ID type other_col
#1    1   A1        cc
#2    1   A2        dd
#3    1   A3        cc
#3.1  1    F         F
#4    2   A1        cc
#5    2   B1        aa
#5.1  2    F         F
#6    3   A2        aa

在哪里df

df <- read.table(text="ID   type  other_col
1    A1      cc
1    A2      dd
1    A3      cc
2    A1      cc
2    B1      aa
3    A2      aa", header=TRUE, stringsAsFactors=FALSE)

推荐阅读