簡體   English   中英

如何辨別哪些變量取決於分組變量?

[英]How do I discern which variables depend on grouping variable?

我想找到在一個組中具有多個值的變量——即依賴於(或不依賴於)分組變量的變量。

換句話說,例如 dataframe 的信息要么

(1) 取決於公司(例如“行業”)或

(2) 取決於公司年份(例如“年銷售額”),

我希望能夠辨別哪些變量屬於 (1) 類型,哪些屬於 (2) 類型。

sample_df <- 
    data.frame(
        year = rep(2013:2015, 3), 
        firm = rep(c("Disney", "Netflix", "Hulu"), each = 3), 
        infoA = c(rep(1, 6), rep(2, 3)), 
        infoB = c(c(1:3), rep(2, 6)), 
        infoC = rep(3:1, each = 3)
    )

# year    firm infoA infoB infoC
# 2013  Disney     1     1     3
# 2014  Disney     1     2     3
# 2015  Disney     1     3     3
# 2013 Netflix     1     2     2
# 2014 Netflix     1     2     2
# 2015 Netflix     1     2     2
# 2013    Hulu     2     2     1
# 2014    Hulu     2     2     1
# 2015    Hulu     2     2     1

如果分組變量是“公司”,

(1) 'infoA' 和 'infoC' 列在每個組中沒有變化,

(2) 雖然“year”和“infoB”在每個組中會有所不同,

在具有許多列的環境中實現這種划分的最簡單方法是什么?

按您的 groupnig 變量分組並計算不同項目的數量,如果它們都相同則返回 0 否則返回 1

res=aggregate(
  subset(sample_df,select=-c(firm)),
  list(sample_df$firm),
  function(x){
    if (length(table(x))==1){
      0
    } else {
      1
    }
  }
)
  Group.1 year infoA infoB infoC
1  Disney    1     0     1     0
2    Hulu    1     0     0     0
3 Netflix    1     0     0     0

要找出哪些列與分組變量不同,只需按列求和

colSums(subset(res,select=-c(Group.1)))==0
 year infoA infoB infoC 
FALSE  TRUE FALSE  TRUE 

我們可以寫一個 function 來計算每組唯一值的數量。 如果值有變化,我們返回TRUEFALSE

library(dplyr)

check_dependability <- function(data, col1, col2 = NULL) {
  data %>%
    group_by({{col1}}, {{col2}}) %>%
    summarise(across(.fns = ~n_distinct(.) > 1))
}

check_dependability(sample_df, firm)

#  firm    year  infoA infoB infoC
#  <chr>   <lgl> <lgl> <lgl> <lgl>
#1 Disney  TRUE  FALSE TRUE  FALSE
#2 Hulu    TRUE  FALSE FALSE FALSE
#3 Netflix TRUE  FALSE FALSE FALSE

check_dependability(sample_df, firm, year)

#  firm     year infoA infoB infoC
#  <chr>   <int> <lgl> <lgl> <lgl>
#1 Disney   2013 FALSE FALSE FALSE
#2 Disney   2014 FALSE FALSE FALSE
#3 Disney   2015 FALSE FALSE FALSE
#4 Hulu     2013 FALSE FALSE FALSE
#5 Hulu     2014 FALSE FALSE FALSE
#6 Hulu     2015 FALSE FALSE FALSE
#7 Netflix  2013 FALSE FALSE FALSE
#8 Netflix  2014 FALSE FALSE FALSE
#9 Netflix  2015 FALSE FALSE FALSE

暫無
暫無

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

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