我如何计算R中每个变量与值之间的关联?

问题描述 投票:0回答:1

我有一个具有31列(V1:V31)的大型数据框,并且有许多行具有V1:V31的不同组合。 NA指示该变量何时不属于组合。下面的示例是我的数据的子集,仅包含前8个变量和前5个组合。我已经将每个变量的值排序为低/中/高。

   V1  V2   V3   V4   V5   V6   V7   V8 
1 Low Low High <NA> <NA> <NA> <NA> <NA>
2 Low Low <NA> High <NA> <NA> <NA> <NA> 
3 Low Low <NA> <NA> High <NA> <NA> <NA> 
4 Low Low <NA> <NA> <NA> <NA> High <NA> 
5 Low Low <NA> <NA> <NA> <NA> <NA> High 

我试图找到的是具有一个值(低/中/高)的变量与另一个变量的值(低/中/高)关联的次数。

例如:

当V1为时,V2多低/中/高?

当V1为mid时V2低/中/高的频率是多少?

V1为high时V2低/中/高的频率是多少?

当V2为时,V3多低/中/高?

依此类推。

我想象每个数据帧,或将它们放在数据帧列表中,看起来像这样。

V1low <- data.frame()

   Low Mid High    
V2 11  3   4 
V3 45  5   34 
V4 3   67  5 
V5 6   45  5 

V1mid<- data.frame()

   Low Mid High    
V2 11  3   4 
V3 45  5   34 
V4 3   67  5 
V5 6   45  5 

V1high<- data.frame()

   Low Mid High    
V2 11  3   4 
V3 45  5   34 
V4 3   67  5 
V5 6   45  5 

V2low<- data.frame()

   Low Mid High    
V3 11  3   4 
V4 45  5   34 
V5 3   67  5 
V6 6   45  5 

我该如何解决这个问题?

r dataframe associations
1个回答
0
投票
创建最小示例data.frame:

df <- data.frame(V1= c("low", "mid", "low", "high", "low"), V2=c("mid", "high", NA, "high", "mid"), V3=c("high", NA, "mid", "mid", "mid"), stringsAsFactors = FALSE)

使用table显示可变值配对的频率。

table(df$V1, df$V2, useNA="always",deparse.level = 2)

我们还可以传递两个以上的“维度”:

table(df$V1, df$V2, df$V3, useNA="always",deparse.level = 2)

0
投票
library(tidyverse) df %>% pivot_longer(everything(), names_to = "col", values_to = "val") %>% mutate(col2 = col) %>% group_by(col, val, col2) %>% summarise(ct = n())

数据:

strata <- c("low", "med", "high", NA)
get_levels <- function(n) sample(strata, n, replace = TRUE)
df <- tibble(V1 = get_levels(10), 
             V2 = get_levels(10), 
             V3 = get_levels(10),
             V4 = get_levels(10))
© www.soinside.com 2019 - 2024. All rights reserved.