簡體   English   中英

用另一數據框R的行替換一列中每次出現的因子變量

[英]Replace every occurrence of factor variable in one column with row from another dataframe R

說我有兩個數據框。 一個是我的“主” df,另一個是我用來替換主df中的值的那個。

因此,在dfMain cd列中,每次出現orange因子水平時,我都希望將其替換為dfReplace的相應行(其行dfReplaceorange

這將導致dfMain寬度增加3列,因為cd列消失並且它獲得了X1, X2, X3, X4

這里的關鍵是我需要盡可能提高效率,因為我的實際數據要長得多

可重現的示例:

set.seed(42)
dfMain <- data.frame('av' = sample.int(10, 100, replace = TRUE), 
                     'ba' = sample.int(10, 100, replace = TRUE), 
                     'cd' = sample(c('orange', 'apple', 'banana', 'strawberry', 'blueberry', 'blackberry'), 100, replace = TRUE))

dfReplace <- data.frame('X1' = runif(6),
                        'X2' = runif(6),
                        'X3' = runif(6),
                        'X4' = runif(6))
rownames(dfReplace) <- c('orange', 'apple', 'banana', 'strawberry', 'blueberry', 'blackberry')

我建議先將行名轉換為顯式表字段,然后將cd因子轉換為字符,然后再進行數據庫聯接,這應該非常快。

library(dplyr)
dfReplace2 <- dfReplace %>%
  add_rownames(var = "cd")

dfMain %>%
  mutate(cd = as.character(cd)) %>%
  left_join(dfReplace2)

我把原始的“ cd”字段留在那里,但是可以用%>% select(-cd)刪除。

暫無
暫無

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

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