gpt4 book ai didi

r - 如何获取 R 中的解析列然后检查匹配?

转载 作者:行者123 更新时间:2023-12-04 11:58:25 26 4
gpt4 key购买 nike

我有这样的df:

        GEO_ID           Area           Tot_Pop 
1 8600000US00601 ZCTA5 00601 17242
2 8600000US00602 ZCTA5 00602 38442
3 8600000US00603 ZCTA5 00603 48814
4 8600000US00606 ZCTA5 00606 6437
5 8600000US00610 ZCTA5 00610 27073
6 8600000US00612 ZCTA5 00612 60303

我想创建两个新专栏。第一,我想提取 GEO_ID 列的最后 5 位数字来生成 NewGeo。第二,我想拉 ZCTA5 之后的字符串以获得 NewArea。它看起来像:

        GEO_ID           Area           Tot_Pop   NewGeo  NewArea
1 8600000US00601 ZCTA5 00601 17242 00601 00601
2 8600000US00699 ZCTA5 00602 38442 00699 00602
3 8600000US00603 ZCTA5 00603 48814 00603 00603
4 8600000US00606 ZCTA5 00606 6437 00606 00606
5 8600000US00610 ZCTA5 00610 27073 00610 00610
6 8600000US00612 ZCTA5 00612 60303 00612 00612

然后我想检查新列 NewGeo 是否与 NewArea 匹配,如果不匹配,我想创建一个新的 df 来查看个人不匹配的列

最佳答案

在你的情况下,使用 data.table,你可以做

library(data.table)
setDT(df)
df[, `:=`(NewGeo = tstrsplit(GEO_ID, "US", fixed = TRUE)[2],
NewArea = tstrsplit(Area, " ", fixed = TRUE)[2])]

如果你想要他们的数字格式,你可以在之后做:

df[,c('NewGeo','NewArea') := lapply(.SD, as.numeric), .SDcols = c('NewGeo','NewArea')]

tstrsplit 是一个内置的 data.table 以有效地切割字符串。您可以使用 stringr 进行替代(但是不确定这个)

df[, `:=`(NewGeo = stringr::str_split_fixed(GEO_ID, "US", simplify = TRUE)[,2],
NewArea = stringr::str_split_fixed(Area, " ", simplify = TRUE)[,2])]

关于r - 如何获取 R 中的解析列然后检查匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61597890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com