【发布时间】:2017-12-24 23:20:38
【问题描述】:
我想比较两个数据框,但 R 显示“因子的水平集不同”错误。
这是数据框 A
structure(list(V1 = c(101.21, 101.29, 101.3, 101.9, 102.21, 102.29,
102.31, 102.39, 102.9, 103.1, 103.91, 103.92, 104.1, 104.2, 105.11,
105.12, 105.13, 105.14, 105.15, 105.94, 105.99, 106.11, 106.12,
106.13, 106.14, 106.19, 106.2, 106.31, 106.32, 106.33, 106.39,
106.41, 106.49, 106.9, 201.1, 201.2, 201.3, 202.1, 202.2, 202.3,
203.11, 203.12, 203.19, 203.21, 203.22, 203.29, 204.1, 204.21,
204.22, 204.23), V2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("CC",
"CC or CTH+RVC<=50", "CC or CTSH+RVC<=50", "CC or RVC<=50", "CC+ECTC",
"CC+ECTC or CTH+ECTC+RVC<=50", "CC+ECTC+TECH", "CC+RVC<=50",
"CTh", "CTH", "CTH or CTH+RVC<=50", "CTH or CTSH+RVC<=50", "CTH or RVC<=50",
"CTH+ECTC", "CTH+ECTC or CTH+RVC<=50", "CTH+ECTC or CTSH+RVC<=50",
"CTH+ECTC or RVC<=50", "CTH+ECTC+RVC<=50", "CTH+RVC<=50", "CTSH",
"CTSH or RVC<=50", "CTSH+ECTC", "CTSH+ECTC+RVC<=50", "CTSH+RVC<=50",
"RVC<=50", "RVC>50"), class = "factor")), .Names = c("V1", "V2"
), row.names = c(NA, 50L), class = "data.frame")
这是数据框 B
structure(list(V1 = c(101.21, 101.29, 101.3, 101.9, 102.21, 102.29,
102.31, 102.39, 102.9, 103.1, 103.91, 103.92, 104.1, 104.2, 105.11,
105.12, 105.13, 105.14, 105.15, 105.94, 105.99, 106.11, 106.12,
106.13, 106.14, 106.19, 106.2, 106.31, 106.32, 106.33, 106.39,
106.41, 106.49, 106.9, 201.1, 201.2, 201.3, 202.1, 202.2, 202.3,
203.11, 203.12, 203.19, 203.21, 203.22, 203.29, 204.1, 204.21,
204.22, 204.23), V2 = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("", "CC",
"CC ", "CC or CTH+RVC>=50", "CC+ECTC", "CC+ECTC or CTH+RVC>=50",
"CC+ECTC+TECH", "CC+RVC(45)", "CC+TECH", "CTH", "CTH ", "CTH or CTSH+ECTC+RVC>=50",
"CTH or CTSH+RVC<50", "CTH or CTSH+RVC<50 ", "CTH or CTSH+RVC>=50",
"CTH or CTSH+RVC>=50 ", "CTH or RVC>=50", "CTH+ECTC", "CTH+ECTC ",
"CTH+ECTC or CTH+RVC<50", "CTH+ECTC or CTH+RVC>=50", "CTH+ECTC or CTSH+RVC<50",
"CTH+ECTC or CTSH+RVC>=50", "CTH+ECTC or RVC>=50", "CTH+RVC(45)",
"CTH+RVC<50", "CTH+RVC>=50", "CTH+RVC>=50 ", "CTH+RVC>50", "cTSH",
"CTSH", "CTSH or RVC(45)", "CTSH or RVC<50", "CTSH or RVC>=50",
"CTSH+ECTC", "CTSH+RVC<50", "CTSH+RVC>=50", "RVC>=50 ", "RVC>50"
), class = "factor")), .Names = c("V1", "V2"), row.names = c(NA,
50L), class = "data.frame")
这是计数代码。
for(j in 2:50){
if(a[j,2] == b[j,2] ){
count = count+1
}
}
我收到此错误消息
Error in Ops.factor(a[j, 2], b[j, 2]) :
level sets of factors are different
【问题讨论】:
-
您有因子列。你可以转换为
character即sum(as.character(A[,2]) == as.character(B[,2]))