复制R中的一些行,保持一些值不变,改变其他值

  • 本文关键字:改变 其他 复制 r row
  • 更新时间 :
  • 英文 :


我有一个由政党及其相应意识形态组成的数据集。其中一些参与方已经更改了名称,但是数据库中没有这些重命名的参与方。我想做的是复制与重命名的政党相对应的行,保持其意识形态价值观不变,但相应更改其名称。

例如。假设我生成以下data.frame:

df <- data.frame(party = c("AB", "PQ", "HL", "AS"), ideology = c("left", "center-right", "right", "right"))

现在假设AB方将其名称更改为RB。我想创建一个名为RB的政党的新行,其意识形态值对应于AB的意识形态值。

我如何以有效的方式做到这一点?在真实的数据集中,我有几个重命名的方。

您可以创建一个包含新旧名称的data.frame,使用match提取当前信息,覆盖当事人名称,并使用rbind将新数据连接到当前。

x <- data.frame(old="AB", new="RB")
y <- df[match(x$old, df$party),]
y$party <- x$new
rbind(df, y)
#  party     ideology
#1    AB         left
#2    PQ center-right
#3    HL        right
#4    AS        right
#5    RB         left

dplyr解决方案:

library(dplyr)
x <- tibble(old = "AB", new = "RB")
df %>%
filter(party == x$old) %>%
mutate(party = x$new) %>%
bind_rows(df, .)
party     ideology
1    AB         left
2    PQ center-right
3    HL        right
4    AS        right
5    RB         left

使用rows_upsert

library(dplyr)
df %>%
rows_upsert(tibble(party = "RB", ideology = df$ideology[df$party == 'AB']))

与产出

party     ideology
1    AB         left
2    PQ center-right
3    HL        right
4    AS        right
5    RB         left

相关内容

  • 没有找到相关文章

最新更新