Zaw*_*min 4 if-statement r rename gsub data.table
OECD 数据中的 STRATUM 太长,为了简单起见,我使用了这个名称,并希望将其简化为更短和更精确的命名,如下面的代码所示。
pisaMas[,`:=`
(SchoolType = c(ifelse(STRATUM == "National Secondary School", "Public",
ifelse(STRATUM == "Religious School", "Religious",
ifelse(STRATUM == "MOE Technical School", "Technical",0)))))]
pisaMas[,table(SchoolType)]
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个简单的方法来解决这个问题,使用 data.table 包。
当前的开发版本针对这种情况data.table提供了新功能fcase(以 SQL 为模型CASE WHEN):
pisaMas[ , SchoolType := fcase(
STRATUM == "National Secondary School", "Public",
STRATUM == "Religious School", "Religious",
STRATUM == "MOE Technical School", "Technical",
default = ''
)]
pisaMas[ , table(SchoolType)]
Run Code Online (Sandbox Code Playgroud)
要获取开发版本,请尝试
install.packages(
'data.table', type = 'source',repos = 'http://Rdatatable.github.io/data.table'
)
Run Code Online (Sandbox Code Playgroud)
如果简单安装不起作用,您可以查看安装 wiki 了解更多详细信息:
https://github.com/Rdatatable/data.table/wiki/Installation
您还可以使用查找表来解决此问题,有关详细信息,请参阅此问答: