簡體   English   中英

替換數據框的子集

[英]Replace a subset of data frame

我有一個錯誤的數據框

T item   V1   V2
1 a      2     .1
2 a      5     .8
1 b      1     .7
2 b      2     .2

我還有另一個數據框,僅對與V1有關的項進行了更正

T item   V1
1 a       2
2 a       6

如何獲得最終數據幀? 我應該使用合並還是rbind。 注意:實際數據幀很大。

這應該工作-

library(dplyr)

df1 %>%
  left_join(df2, by = c("T", "item")) %>%
  mutate(
    V1 = coalesce(as.numeric(V1.y), as.numeric(V1.x))
  ) %>%
  select(-V1.x, -V1.y)

一個選項是在'T','item' on進行data.table聯接,並從第二個數據集中為'V1'分配相應的'V1'列( i.V1

library(data.table)
setDT(df1)[df2, V1 := i.V1, on = .(T, item)]
df1
#   T item V1  V2
#1: 1    a  2 0.1
#2: 2    a  6 0.8
#3: 1    b  1 0.7
#4: 2    b  2 0.2

數據

df1 <- structure(list(T = c(1L, 2L, 1L, 2L), item = c("a", "a", "b", 
"b"), V1 = c(2L, 5L, 1L, 2L), V2 = c(0.1, 0.8, 0.7, 0.2)), 
 class = "data.frame", row.names = c(NA, -4L))


df2 <- structure(list(T = 1:2, item = c("a", "a"), V1 = c(2L, 6L)), 
  class = "data.frame", row.names = c(NA, 
-2L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM