gpt4 book ai didi

r - dplyr 更新 data.frame 中的单元格

转载 作者:行者123 更新时间:2023-12-01 23:15:02 26 4
gpt4 key购买 nike

df <-data.frame(x=c(1:5),y=c(letters[1:5]))

假设我想修改最后一行,

update.row<-filter(df,x==5) %>% mutate(y="R")

如何将此行更新到 data.frame 中?我发现唯一的方法虽然很奇怪,但就是做一个反连接并追加结果。

df <-anti_join(df,update.row,by="x") %>%
bind_rows(update.row)

但是,这似乎是完成简单任务的一种非常不优雅的方法。非常感谢任何想法...

最佳答案

使用 data.table,我们可以将值分配 (:=) 到 i 为 TRUE 的行。由于分配完成到位,效率非常高。

library(data.table)
setDT(df)[x==5, y:="R"]
df
# x y
#1: 1 a
#2: 2 b
#3: 3 c
#4: 4 d
#5: 5 R

正如OP提到的最后一行,更通用的方法是

setDT(df)[.N, y:= "R"]

或者正如 @thelatemail 提到的,如果我们想要替换任何行,只需提及 i 中的行索引,即在本例中为 5

setDT(df)[5, y:="R"]

关于r - dplyr 更新 data.frame 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com