कहो मेरे पास यह नकली डेटा फ्रेम है fake_ds

और यहां यह "external_table" भी है:

table

मैं निम्नलिखित प्रक्रिया के माध्यम से, बाहरी_टेबल में एक नया कॉलम जोड़ने के लिए दोनों डेटासेट को "सिंक्रनाइज़" करना चाहता हूं:

  1. नकली_डीएस तक पहुंचें
  2. बाहरी_टेबल%>% itens_fator . से आइटम में एक फ़ंक्शन निष्पादित करें
  3. परिणामों को बाहरी तालिका में बदलें

मेरा वांछित आउटपुट (नकली परिणामों के साथ) वांछित आउटपुट

वह छद्म कार्य है जिसे स्क्रिप्ट को करना चाहिए:

fake_ds %>%  #get my ds
  mutate(cronbach_alpha = fake_ds %>% 
           select(external_table, itens_fator) %>% 
           alpha(.)$total[1]) #get variables from external table

यदि इस फ़ंक्शन को लागू करना कठिन है, तो मैं अन्य दृष्टिकोणों के लिए खोलूंगा जो वांछित आउटपुट भी देते हैं।

मैं tidyverse के साथ रहना चाहूंगा।

मेरे डेटा को फिर से बनाने के लिए कोड:

library(dplyr)
library(tidyr)

x <- paste0("y",seq(1:96)) #create X
y <- rep(0:5, 96*2) #create values
fake_ds <- data.frame(x,y) #dataframe
fake_ds %>% 
  pivot_wider(names_from = x, values_from=y, values_fn = {mean}) -> fake_ds
fake_ds <- fake_ds %>% slice(rep(1:n(), each = 50)) #replicate
fake_ds <- rbind(fake_ds, seq(1:96)) #add variability
    
#external table
external_table <- structure(list(
  name = c("X5", "X1", "X2", "X0", "X3", "X4"), 
  itens_fator = c("y1,y12,y59,y76,y78,y92,y93,y94,y96", 
                  "y5,y14,y15,y16,y17,y18,y20,y24,y40,y60,y62,y64,y75", 
                  "y10,y19,y32,y34,y36,y37,y47,y56,y58,y72,y80,y85", 
                  "y13,y30,y39,y53,y54,y55,y66,y73,y84,y91", 
                  "y42,y43,y45,y63,y69,y77,y87,y88", 
                  "y44,y49,y50,y68,y82,y89")), 
  row.names = c(NA, -6L), 
  groups = structure(list(name = c("X0", "X1", "X2", "X3", "X4", "X5"), 
                          .rows = structure(list(4L, 2L, 3L, 5L, 6L, 1L), 
                                            ptype = integer(0), 
                                            class = c("vctrs_list_of", 
                                                      "vctrs_vctr", "list"))), 
                     row.names = c(NA, -6L), 
                     class = c("tbl_df", "tbl", "data.frame"), 
                     .drop = TRUE), 
  class = c("grouped_df", "tbl_df", "tbl", "data.frame"))
0
Luis 26 सितंबर 2020, 03:17

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि मैंने टिप्पणियों में उल्लेख किया है कि आप जो हासिल करने की कोशिश कर रहे हैं वह असंभव है .... क्रोनबैक के अल्फाज प्राप्त करने के लिए आपको बस इतना करना है कि स्ट्रस्प्लिट के साथ lapply का उपयोग करें ..

क्रोनबैक के अल्फ़ाज़ प्राप्त करना

lapply(strsplit(external_table$itens_fator,","), function(x) fake_ds %>% 
           select(all_of(x)) %>% 
           alpha(.)%>% .$total %>% .$raw_alpha)

साफ रास्ता

external_table$itens_fator %>% strsplit(",") %>% purrr::map_dbl(function(x) fake_ds %>% 
           select(all_of(x)) %>% 
           psych::alpha(.)%>% .$total %>% .$raw_alpha)

आंकड़े

library(psych)
library(dplyr)
library(tidyr)

x <- paste0("y",seq(1:96)) #create X
y <- rep(0:5, 96*2) #create values
fake_ds <- data.frame(var=x,val=y) #dataframe
fake_ds %>% 
  pivot_wider(names_from = var, values_from=val, values_fn=list(val=mean)) -> fake_ds
fake_ds <- fake_ds %>% slice(rep(1:n(), each = 50)) #replicate
fake_ds <- rbind(fake_ds, seq(1:96)) #add variability
    
#external table
external_table <- structure(list(
  name = c("X5", "X1", "X2", "X0", "X3", "X4"), 
  itens_fator = c("y1,y12,y59,y76,y78,y92,y93,y94,y96", 
                  "y5,y14,y15,y16,y17,y18,y20,y24,y40,y60,y62,y64,y75", 
                  "y10,y19,y32,y34,y36,y37,y47,y56,y58,y72,y80,y85", 
                  "y13,y30,y39,y53,y54,y55,y66,y73,y84,y91", 
                  "y42,y43,y45,y63,y69,y77,y87,y88", 
                  "y44,y49,y50,y68,y82,y89")), 
  row.names = c(NA, -6L), 
  groups = structure(list(name = c("X0", "X1", "X2", "X3", "X4", "X5"), 
                          .rows = structure(list(4L, 2L, 3L, 5L, 6L, 1L), 
                                            ptype = integer(0), 
                                            class = c("vctrs_list_of", 
                                                      "vctrs_vctr", "list"))), 
                     row.names = c(NA, -6L), 
                     class = c("tbl_df", "tbl", "data.frame"), 
                     .drop = TRUE), 
  class = c("grouped_df", "tbl_df", "tbl", "data.frame"))
1
Abdessabour Mtk 26 सितंबर 2020, 18:27