好的,我已经阅读了这个问题Confusion between factor levels and factor labels。但还是觉得自己错过了很多。所以这本身可能不是一个问题——更像是我沮丧的表现。
样本数据
sample <- dput(structure(list(Logistik_1 = structure(c(3L, 2L, 3L, 3L, 3L, 4L), .Label = c("I meget ringe grad", "I ringe grad", "I nogen grad", "I høj grad", "I meget høj grad"), class = "factor"),
Logistik_2 = structure(c(4L, 4L, 4L, 3L, 3L, 4L), .Label = c("I meget ringe grad", "I ringe grad", "I nogen grad", "I høj grad", "I meget høj grad"), class = "factor"),
Logistik_3 = structure(c(3L, 4L, 3L, 4L, 3L, 4L), .Label = c("I meget ringe grad", "I ringe grad", "I nogen grad", "I høj grad", "I meget høj grad"), class = "factor"),
Logistik_4 = structure(c(4L, 2L, 3L, 4L, 2L, 3L), .Label = c("I meget ringe grad", "I ringe grad", "I nogen grad", "I høj grad", "I meget høj grad"), class = "factor")),
.Names = c("Logistik_1","Logistik_2", "Logistik_3", "Logistik_4"), row.names = c(NA, 6L), class = "data.frame"))
的输出sample
显示了标签。
Logistik_1 Logistik_2 Logistik_3 Logistik_4
1 I nogen grad I høj grad I nogen grad I høj grad
2 I ringe grad I høj grad I høj grad I ringe grad
3 I nogen grad I høj grad I nogen grad I nogen grad
4 I nogen grad I nogen grad I høj grad I høj grad
5 I nogen grad I nogen grad I nogen grad I ringe grad
6 I høj grad I høj grad I høj grad I nogen grad
我无法用这些名义数据进行计算rowSums(sample)
:
Error in rowSums(sample) : 'x' must be numeric
我可以将每个变量更改为数字。例如,如果我想添加所有整数值,我可以这样做:sample$test <- as.numeric(sample[[1]])+as.numeric(sample[[2]])+as.numeric(sample[[3]])+as.numeric(sample[[4]])
这会起作用。但我认为它的打字量很大?
但是:如果我 cbind 列,输出将返回级别: 输出with(sample, cbind(Logistik_1, Logistik_2))
:
Logistik_1 Logistik_2
[1,] 3 4
[2,] 2 4
[3,] 3 4
[4,] 3 3
[5,] 3 3
[6,] 4 4
我可以在这些层面上进行计算。例如,如果我想添加所有整数值,我可以这样做:sample$total_score <-with(sample, rowSums(cbind(Logistik_1, Logistik_2, Logistik_3, Logistik_4)))
[a]
Logistik_1 Logistik_2 Logistik_3 Logistik_4 total_score
1 I nogen grad I høj grad I nogen grad I høj grad 14
2 I ringe grad I høj grad I høj grad I ringe grad 12
3 I nogen grad I høj grad I nogen grad I nogen grad 13
4 I nogen grad I nogen grad I høj grad I høj grad 14
5 I nogen grad I nogen grad I nogen grad I ringe grad 11
6 I høj grad I høj grad I høj grad I nogen grad 15
但我很困惑,并认为我正在做一些简单太复杂的事情。是否有规范的“正确”方法来计算因子水平?as.numeric
比 更正确吗cbind
?为什么 cbind 一开始就这样工作?
我希望这样的事情会奏效:sum(as.numeric(sample[1:4]))
- 但它会返回Error: (list) object cannot be coerced to type 'double'
(因为我在数据帧上调用 as.numeric )。
[a] 我知道大多数统计学家会不赞成将整数值分配给调查响应的常见做法(例如,“非常同意”=5、“有点同意”=4 等)——但请接受我们就是这样做的在社会科学中:-)。标签是调查中的响应,级别是分配给这些响应的整数值。