gpt4 book ai didi

按名称返回所有因子级别作为来自三列数据的新列。表 [R]

转载 作者:行者123 更新时间:2023-12-04 22:59:32 25 4
gpt4 key购买 nike

有什么方法可以使用 data.table 或 dplyr 来解决以下问题?

library(data.table)

(DT = data.table(a = LETTERS[c(1, 1:3, 8)], b = c(2, 4:7),
c = as.factor(c("bob", "mary", "bob", "george", "alice")), key="a"))

返回:
#    a b      c
# 1: A 2 bob
# 2: A 4 mary
# 3: B 5 bob
# 4: C 6 george
# 5: H 7 alice

想得到这个:
#        alice bob george  mary 
# 1: A NA 2 NA NA
# 2: A NA NA NA 4
# 3: B NA 5 NA NA
# 4: C NA NA 6 NA
# 5: H 7 NA NA NA

最佳答案

这类似于 creating dummy variables .

uc <- sort(unique(as.character(DT$c)))
DT[,(uc):=lapply(uc,function(x)ifelse(c==x,b,NA))][,c('b','c'):=NULL]

我听说过关于 ifelse 的坏消息,所以更快的路线可能是
uc <- sort(unique(as.character(DT$c)))
is <- 1:nrow(DT)
js <- as.character(DT$c)
vs <- DT$b

DT[,(uc):=NA_integer_]
for (i in is) set(DT,i=is[i],j=js[i],value=vs[i])

DT[,c('b','c'):=NULL]

关于按名称返回所有因子级别作为来自三列数据的新列。表 [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064401/

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