这个 data.table R 代码有一个简洁/最简单的方法吗?

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 包。

Mic*_*ico 6

当前的开发版本针对这种情况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

您还可以使用查找表来解决此问题,有关详细信息,请参阅此问答:

/sf/answers/2547371291/