小编Ker*_*rry的帖子

将strptime函数应用于data.table的每个成员

我无法将函数应用于data.table的每个成员.这是一个简化的例子:

dt <- data.table( a= c("30JAN14:23:16:00","23MAY12:02:00:00"), 
                  b=c("03AUG09:00:00:00","13JUN12:02:00:00"), 
                  c=c("31JAN14:15:19:00","23MAY12:00:00:00"))

strptime(dt[1,1,with=FALSE], "%d%B%y:%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)

回报 "2014-01-30 23:16:00 PST"

但是,当我尝试将其应用于data.table时,我没有得到我正在寻找的内容并收到指责性消息.

cols <- c("a","b","c")
dt[, (cols):=sapply(.SD, function(x) strptime(x, "%d%B%y:%H:%M:%S")),.SDcols=cols]
Run Code Online (Sandbox Code Playgroud)

datetime r apply data.table

6
推荐指数
2
解决办法
1162
查看次数

从数据表中,每组随机选择一行

我正在寻找一种从数据表中选择行的有效方法,这样我就可以为特定列中的每个唯一值设置一个代表性行.

我举一个简单的例子:

require(data.table)

y = c('a','b','c','d','e','f','g','h')
x = sample(2:10,8,replace = TRUE)
z = rep(y,x)
dt = as.data.table( z )
Run Code Online (Sandbox Code Playgroud)

我的目标是通过对列z中的每个字母ah采样一行来对数据表dt进行子集化.

r subset random-sample data.table

6
推荐指数
2
解决办法
1799
查看次数

我可以使用R data.table连接功能来选择行并执行某些操作吗?

我不知道如何获得两个data.tables连接产生的行索引.

为了设置一个简化的例子,假设dt是一个data.table,其列'a'是字母表中的一个字母,'b'是其他一些信息.

我想添加一个列'c'并根据列'a'将其设置为'vowel'或'consonant'.我有另一个数据表dtv作为元音表.我可以使用data.table的连接功能来有效地执行此操作吗?

require(data.table)
dt <- data.table ( a = sample(letters, 25, replace = T), 
                   b = sample(50:100,   25, replace = F))
dtv <- data.table( vowel  = c( 'a','e','i','o','u') )
setkey(dt,a)
Run Code Online (Sandbox Code Playgroud)

下一行代码为我提供了一个带有元音的行的data.table

dt[dtv, nomatch=0]  
Run Code Online (Sandbox Code Playgroud)

但是我如何获取行索引以便将行标记为元音或辅音?

dt[, c := 'consonant']
dt[{ `a` found in vowel list }, c := 'vowel']  
# I want to do this where column 'a' is a vowel
Run Code Online (Sandbox Code Playgroud)

join r data.table

6
推荐指数
1
解决办法
192
查看次数

使用runif计算data.table中的列

我想为数据表中的每一行使用runif生成一个随机数.不幸的是,我最终在每一行都有相同的数字.

require(data.table)
dx <- data.table( min=1:10, max=seq(10,100,10))
dx[, sum:=min+max]
dx[, runif:=runif(n=1,min,max)]

> dx
    min max sum    runif
 1:   1  10  11 5.086488
 2:   2  20  22 5.086488
 3:   3  30  33 5.086488
 4:   4  40  44 5.086488
 5:   5  50  55 5.086488
 6:   6  60  66 5.086488
 7:   7  70  77 5.086488
 8:   8  80  88 5.086488
 9:   9  90  99 5.086488
10:  10 100 110 5.086488
Run Code Online (Sandbox Code Playgroud)

为什么runif表现得这样,但加法效果很好?有人可以建议如何使用每行的最小值和最大值来为该行生成均匀分布的随机数?

r data.table

5
推荐指数
1
解决办法
795
查看次数

标签 统计

data.table ×4

r ×4

apply ×1

datetime ×1

join ×1

random-sample ×1

subset ×1