R package psych 组合后一个变量中的两种方法

R package psych two means in one variable after combining

我目前正在分析学生项目的数据。 在分析过程中,我使用 cbind():

将两个变量合二为一
interpas$GA02_01 <- cbind(interpas$LP02_01, interpas$ST02_01)

两个变量 LP02_01 和 ST02_01 测量的是相同的问题,但针对的是不同的媒体格式。两者之间没有重叠。结构是这样的:

LP02_01 ST02_01
1        NA
NA       2
NA       5
4        NA

所以他们只是合并了。 当我使用 R 中的内置 mean() 函数计算平均值时,我得到了新变量 GA02_01.

的平均值

但是当我使用 psych 包的 mean 函数,或来自该包的任何其他描述性统计函数(如 describe)时,它正在计算两个变量 LP02_01 和 ST02_01还是分开的 像这样:

> describe(interpas$GA02_01)
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 151 3.62 1.89      4    3.59 1.48   1   7     6 0.00    -1.24 0.15
X2    2  63 2.70 1.92      2    2.45 1.48   1   7     6 0.85    -0.64 0.24

有人知道解决这个问题的方法吗?不幸的是,我需要 psych 包中的描述函数 skew 和 kurtosi 进行进一步分析,还需要一个函数来检查正态分布。

非常感谢!

我会调查 Coalesce

所以你可能想要这样的东西:

df%>%
mutate(new_var = coalesce(old_var1, old_var2)%>%
select(-c(old_var1,old_var2))

这里是 dplyr 函数的文档。 https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/coalesce

您只需要 unlist 您的数据框。 但是 确保您以正确的方式(针对您的用例)选择了所需的列。例如,当您使用 cbind 时,您创建了矩阵。您可以只使用索引,即 df[1:2](对于第一列和第二列)或按名称,即 df[,c("LP02_01", "ST02_01")]。这样你就得到了一个数据框对象。那么你可以只 unlistdescribe(),即

psych::describe(unlist(interpas[, c("LP02_01", "ST02_01")]))
#   vars n mean   sd median trimmed  mad min max range skew kurtosis   se
#X1    1 4    3 1.83      3       3 2.22   1   5     4    0    -2.24 0.91