簡體   English   中英

比較 R 數據框中的列

[英]Compare columns in R dataframe

下面是數據框。 我正在嘗試比較 2 列,以便獲得所需的輸出

asd <- data.frame(Ratings= c(1,2), Reviews = c(45,54))

我得到的輸出

c("1" = asd$Reviews[asd$Ratings == 1], "2" = asd$Reviews[asd$Ratings == 2])
 1  2 
45 54

但是如果我以相反的方式做,我不會得到預期的輸出

c(asd$Reviews[asd$Ratings == 1] = 1, asd$Reviews[asd$Ratings == 2] = 2)

預期輸出

45 54
1  2

使用setNames

setNames(seq_along(asd$Ratings), asd$Reviews)
45 54 
 1  2 

或使用names<-

do.call(`names<-`, asd)
45 54 
 1  2 

這也適用於新數據

asd <- data.frame(Ratings= c("Yes","No"), Reviews = c(45,54))
do.call(`names<-`, asd)
   45    54 
"Yes"  "No" 

或在 OP 的帖子中使用的相同表達式

setNames(c(1, 2), c(asd$Reviews[asd$Ratings == 1], asd$Reviews[asd$Ratings == 2]))
45 54 
 1  2 

或者更容易

library(tibble)
deframe(asd[2:1])

或者另一種選擇是:= with dplyr::lst然后unlist

library(dplyr)
unlist(lst(!! glue::glue("{asd$Reviews[asd$Ratings == 1]}")  := 1, 
         !! glue::glue("{asd$Reviews[asd$Ratings == 2]}")  := 2))
45 54 
 1  2 

暫無
暫無

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

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