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")]
。这样你就得到了一个数据框对象。那么你可以只 unlist
和 describe()
,即
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
我目前正在分析学生项目的数据。 在分析过程中,我使用 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")]
。这样你就得到了一个数据框对象。那么你可以只 unlist
和 describe()
,即
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