【发布时间】:2020-09-26 00:17:21
【问题描述】:
这里还有这个“external_table”:
我想通过以下过程“同步”两个数据集以向 external_table 添加一个新列:
- 访问 fake_ds
- 对来自 external_table %>% itens_fator 的项目执行函数
- 将结果变异到外部表中
这是脚本应该执行的伪函数:
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"))
【问题讨论】:
-
使用 mutate
the number of items you have is different from the number of rows基本上不可能实现您想要实现的目标,并且按照您的方式将 em 附加到数据框没有任何意义 -
枢轴更宽的代码也失败了
-
那么,“fake_ds”中的“external_table”中显示的变量不可以选择吗?