r - 基于变量值(水平)的子集调查数据?
问题描述
我试图通过使用调查参与者的职业作为样本来分析 PIAAC(成人能力国际评估计划)数据。.csv 文件包含两张表:一张包含变量,另一张包含变量可以采用的值。可以通过以下方式访问不同国家/地区的各个文件:https ://webfs.oecd.org/piaac/puf-data/CSV/或直接通过以下方式访问整个数据集:
library("devtools")
install_github("pbiecek/PISA2012lite") #Needed to access the PIAAC data
data("piaac", package = "PIAAC")
当我在 R 中读取数据时,变量“ISCO08_C”表示参与者的当前职业,在 R 中的 data.frame 中,它只取值 9996、9997、9998、9999,对应于“有效跳过”、“不知道”、“拒绝”和“未说明或推断”(这些可以在 OECD PIAAC 网站提供的代码簿中找到:https ://www.oecd.org/skills/piaac/数据/)。在值表的 .csv 文件中,还有每个职业的代码,我的目标是获得与特定 ISCO08 分类代码相关联的参与者的子集。在我的情况下,代码是“233”。这是前 20 个条目的样子:
head(aut$ISCO08_C, 20)
[1] 9996 9996 9996 9999 9996 9999 9999 9996 9999 9999
[11] 9999 9999 9999 9999 9999 9999 9999 9996 9999 9999
605 Levels: 9996 9999 0110 0210 0310 1111 1113 1114 ... 33
我看到有 605 个级别,也许我的问题的解决方案就在那里,但我不知道如何进行。我试过做:
aut = subset(piaac, CNTRYID == "Austria")
teachers = aut[aut$ISCO08_C %in% "233"]
但考虑到变量取值从 9996 到 9999,除了给我 0 个可以理解的变量之外,它并没有多大作用。下面我提供了感兴趣的变量的结构和 ASCII 表示。
> str(piaac$ISCO08_C)
Factor w/ 605 levels " ",..: 2 2 2 3 2 3 3 2 3 3 ...
> dput(head(piaac$ISCO08_C))
structure(c(2L, 2L, 2L, 3L, 2L, 3L), .Label = c(" ",
"9996 ", "9999 ", "0110 ", "0210 ",
"0310 ", "1111 ", "1113 ", "1114 ",
"1120 ", "1211 ", "1212 ", "1213 ",
"1219 ", "1221 ", "1222 ", "1223 ",
"1321 ", "1323 ", "1324 ", "1330 ",
"1342 ", "1343 ", "1344 ", "1345 ",
"1346 ", "1349 ", "1411 ", "1412 ",
"1420 ", "1431 ", "1439 ", "2113 ",
"2120 ", "2131 ", "2133 ", "2141 ",
"2144 ", "2145 ", "2149 ", "2151 ",
"2152 ", "2153 ", "2161 ", "2162 ",
"2163 ", "2165 ", "2166 ", "2211 ",
"2212 ", "2221 ", "2222 ", "2230 ",
"2240 ", "2250 ", "2261 ", "2262 ",
"2263 ", "2264 ", "2265 ", "2266 ",
"2267 ", "2269 ", "2310 ", "2320 ",
"2330 ", "2341 ", "2342 ", "2351 ",
"2352 ", "2354 ", "2355 ", "2356 ",
"2359 ", "2411 ", "2412 ", "2413 ",
"2421 ", "2422 ", "2423 ", "2424 ",
"2431 ", "2432 ", "2433 ", "2511 ",
"2512 ", "2513 ", "2514 ", "2519 ",
"2521 ", "2522 ", "2611 ", "2612 ",
"2619 ", "2621 ", "2622 ", "2632 ",
"2634 ", "2635 ", "2636 ", "2641 ",
"2642 ", "2643 ", "2651 ", "2652 ",
"2654 ", "2655 ", "2659 ", "3111 ",
"3112 ", "3113 ", "3114 ", "3115 ",
"3116 ", "3118 ", "3119 ", "3121 ",
"3122 ", "3123 ", "3133 ", "3135 ",
"3139 ", "3141 ", "3152 ", "3153 ",
"3154 ", "3211 ", "3212 ", "3213 ",
"3221 ", "3240 ", "3251 ", "3252 ",
"3253 ", "3254 ", "3256 ", "3257 ",
"3258 ", "3259 ", "3311 ", "3312 ",
"3313 ", "3314 ", "3315 ", "3321 ",
"3322 ", "3323 ", "3331 ", "3332 ",
"3333 ", "3334 ", "3339 ", "3341 ",
"3342 ", "3343 ", "3344 ", "3351 ",
"3352 ", "3353 ", "3354 ", "3355 ",
"3359 ", "3411 ", "3412 ", "3413 ",
"3422 ", "3423 ", "3431 ", "3432 ",
"3434 ", "3435 ", "3511 ", "3512 ",
"3513 ", "3514 ", "4110 ", "4120 ",
"4132 ", "4211 ", "4221 ", "4222 ",
"4223 ", "4224 ", "4225 ", "4226 ",
"4229 ", "4311 ", "4312 ", "4313 ",
"4321 ", "4322 ", "4323 ", "4411 ",
"4412 ", "4413 ", "4416 ", "4419 ",
"5111 ", "5112 ", "5113 ", "5120 ",
"5131 ", "5132 ", "5141 ", "5142 ",
"5151 ", "5152 ", "5153 ", "5163 ",
"5164 ", "5165 ", "5211 ", "5212 ",
"5221 ", "5222 ", "5223 ", "5230 ",
"5242 ", "5244 ", "5246 ", "5249 ",
"5311 ", "5312 ", "5321 ", "5322 ",
"5329 ", "5411 ", "5412 ", "5413 ",
"5414 ", "5419 ", "6111 ", "6112 ",
"6113 ", "6121 ", "6130 ", "7111 ",
"7112 ", "7114 ", "7115 ", "7119 ",
"7121 ", "7122 ", "7123 ", "7124 ",
"7125 ", "7126 ", "7127 ", "7131 ",
"7132 ", "7133 ", "7211 ", "7212 ",
"7214 ", "7215 ", "7221 ", "7222 ",
"7223 ", "7231 ", "7232 ", "7233 ",
"7234 ", "7313 ", "7315 ", "7316 ",
"7318 ", "7319 ", "7321 ", "7322 ",
"7411 ", "7412 ", "7413 ", "7421 ",
"7422 ", "7511 ", "7512 ", "7514 ",
"7521 ", "7522 ", "7532 ", "7533 ",
"7534 ", "7543 ", "8114 ", "8121 ",
"8122 ", "8131 ", "8132 ", "8142 ",
"8143 ", "8152 ", "8153 ", "8157 ",
"8159 ", "8160 ", "8171 ", "8172 ",
"8181 ", "8183 ", "8189 ", "8211 ",
"8212 ", "8219 ", "8311 ", "8312 ",
"8322 ", "8331 ", "8332 ", "8341 ",
"8342 ", "8343 ", "8344 ", "9111 ",
"9112 ", "9121 ", "9123 ", "9129 ",
"9211 ", "9212 ", "9213 ", "9214 ",
"9312 ", "9313 ", "9321 ", "9329 ",
"9331 ", "9333 ", "9334 ", "9412 ",
"9510 ", "9520 ", "9611 ", "9612 ",
"9622 ", "9623 ", "9629 ", "9997 ",
"1311 ", "1312 ", "1322 ", "1341 ",
"21 ", "2111 ", "2132 ", "2142 ",
"2146 ", "2164 ", "226 ", "23 ",
"2353 ", "2434 ", "2631 ", "2656 ",
"31 ", "3117 ", "3131 ", "3132 ",
"3142 ", "3143 ", "3151 ", "3214 ",
"3230 ", "3255 ", "3421 ", "3433 ",
"35 ", "3521 ", "3522 ", "4131 ",
"4212 ", "4213 ", "4227 ", "4415 ",
"5169 ", "5245 ", "6123 ", "6129 ",
"6210 ", "7213 ", "7224 ", "723 ",
"7311 ", "7314 ", "7515 ", "7523 ",
"7531 ", "7536 ", "7544 ", "7549 ",
"81 ", "8111 ", "8141 ", "8151 ",
"8155 ", "8182 ", "8350 ", "9122 ",
"9215 ", "9311 ", "9411 ", "9613 ",
"9621 ", "9998 ", "011 ", "021 ",
"031 ", "1112 ", "112 ", "122 ",
"132 ", "133 ", "142 ", "210 ",
"211 ", "2114 ", "212 ", "214 ",
"2143 ", "221 ", "223 ", "224 ",
"225 ", "231 ", "232 ", "233 ",
"234 ", "2343 ", "235 ", "2357 ",
"241 ", "242 ", "243 ", "2443 ",
"25 ", "251 ", "2523 ", "2529 ",
"264 ", "2653 ", "311 ", "313 ",
"3134 ", "314 ", "321 ", "324 ",
"325 ", "332 ", "3324 ", "333 ",
"334 ", "341 ", "343 ", "351 ",
"352 ", "4 ", "41 ", "411 ",
"412 ", "422 ", "431 ", "441 ",
"51 ", "511 ", "512 ", "52 ",
"522 ", "523 ", "5232 ", "53 ",
"531 ", "532 ", "541 ", "6114 ",
"6122 ", "613 ", "621 ", "6222 ",
"6223 ", "631 ", "6320 ", "713 ",
"722 ", "731 ", "7317 ", "7323 ",
"74 ", "741 ", "75 ", "751 ",
"7513 ", "8113 ", "813 ", "816 ",
"82 ", "831 ", "832 ", "833 ",
"834 ", "835 ", "91 ", "911 ",
"921 ", "9216 ", "93 ", "951 ",
"952 ", "961 ", "962 ", " 210 ",
" 211 ", " 212 ", " 310 ", "2633 ",
"3155 ", "4214 ", "4712 ", "6221 ",
"6224 ", "6310 ", "6340 ", "7113 ",
"7312 ", "7541 ", "7542 ", "8156 ",
"8321 ", "3222 ", "5162 ", "7535 ",
"121 ", "131 ", "141 ", "215 ",
"261 ", "263 ", "331 ", "342 ",
"421 ", "513 ", "514 ", "5243 ",
"622 ", "753 ", "8112 ", "812 ",
"815 ", "817 ", "912 ", "932 ",
"933 ", "0 ", "2 ", "3 ",
"5241 ", "611 ", "612 ", "7 ",
"71 ", "711 ", "712 ", "72 ",
"752 ", "8 ", "811 ", "814 ",
"8154 ", "821 ", "83 ", "9 ",
"931 ", "134 ", "42 ", "432 ",
"4414 ", "61 ", "732 ", "742 ",
"941 ", "5161 ", "6330 ", "111 ",
"143 ", "213 ", "216 ", "222 ",
"252 ", "262 ", "265 ", "312 ",
"315 ", "322 ", "323 ", "335 ",
"515 ", "516 ", "524 ", "721 ",
"754 ", "818 ", "12 ", "632 ",
"633 ", "2112 ", "24 ", "33 "
), class = "factor")
我希望这些信息足以理解问题。任何帮助将不胜感激。先感谢您。
解决方案
我认为这里的答案很简单。piacc
数据具有ISO08_C
类型为的列factor
。它包含您可以在dput
. 但是,在奥地利的子集中,只有数字 9996 和 9999 存在。
当您使用因子列对数据框进行子集化时,即使子集中不存在某些因子水平,也会保留所有因子水平。
例如:
df_with_factors <- data.frame(group = as.factor(rep(LETTERS[1:5], each = 2)))
subsetted_df <- subset(df_with_factors, group != "A")
subsetted_df
#> group
#> 3 B
#> 4 B
#> 5 C
#> 6 C
#> 7 D
#> 8 D
#> 9 E
#> 10 E
您可以看到 中没有“A”条目subsetted_df$group
。然而,如果我检查因子水平:
levels(subsetted_df$group)
#> [1] "A" "B" "C" "D" "E"
您可以看到“A”仍然作为一个因子水平存在,即使它没有在这个子集中使用。
如果您使用提供的链接仅将奥地利数据下载为 csv,则可以确认您的数据就是这种情况。
df <- read.csv("https://webfs.oecd.org/piaac/puf-data/CSV/prgautp1.csv")
现在,如果我将来自奥地利数据的不同值制成表格ISO08_C
,我可以看到:
table(df$ISCO08_C)
#> 9996 9999
#> 1392 3692
因此,对您的问题的简短回答是奥地利数据集中没有回答这个特定问题,因此您正在尝试分析您拥有的数据集中不存在的数据。
推荐阅读
- java - 没有类型作为方法参数的泛型 - 无法解析它的字段类型
- javascript - 如何使用jquery中的函数设置值元素输入
- r - 如何修复 plot3d 中缺少值的 3D 图
- vue.js - 默认路由器:使 id 持续到所有孩子
- rxjs - 单个操作员是否必须安装管道
- c - 使用C中的双指针将二维数组放入现有内存
- javascript - Vue.js 未检测到窗口关闭
- ios - Xcode 10 - 使用 Swift 4.1.2 编译的模块不能被 Swift 4.2 编译器导入
- go - Go 客户端和“etcdctl”cli 实用工具似乎在不同的工作区上工作,即使它们连接到相同的主机
- reactjs - 当使用带有“no-any”的 Typescript 时,允许 props.children 是任何东西:真的吗?