小编edd*_*ddi的帖子

R data.table:电流测量之前发生的次数

我进行了几天的一系列测量。测量的数量通常为4。任何测量中可以捕获的数字范围为1-5(在现实生活中,给定测试集,该范围可以高达100或低至20)。

我想每天计算每个值在当天之前发生了多少次。

让我用一些示例数据进行解释:

# test data creation
d1 = list(as.Date("2013-5-4"),  4,2)
d2 = list(as.Date("2013-5-9"),  2,5)
d3 = list(as.Date("2013-5-16"), 3,2)
d4 = list(as.Date("2013-5-30"), 1,4)

d = rbind(d1,d2,d3,d4)
colnames(d) <- c("Date", "V1", "V2")

tt = as.data.table(d)
Run Code Online (Sandbox Code Playgroud)

我想运行一个函数,该函数将添加5列(在可能的值范围内,每个可能的值1个)。在每个列中,我都希望在测试日期之前计算该值的出现次数。

例如,2013-5-30的函数输出为C1=0, C2=3, C3=1, C4=1, C5=1

它计数了多少次:

1出现在之前且不包括5/30,为零
。2出现在之前且不包括5/30,这是三个
。3出现在之前且不包括5/30,这是一个
等。

此外,它还应包括一列,显示该数字占总测量值的百分比。例如5/30,在5/30之前有6次测量,因此

pc1 =(0/6),pc2 = 3/6,pc3 = 1/6,pc4 = 1/6,pc5 = 1/6

我想使用data.table分配符号(:=)将所有这些多列添加到一张照片中。我正在寻找的输出格式如下:

Date V1 V2 C1 PC1 C2 PC2 C3 PC3 C4 PC4 C5 PC5
Run Code Online (Sandbox Code Playgroud)

r function data.table

2
推荐指数
1
解决办法
1705
查看次数

重塑大数据

我有一个包含100个变量和400,000个事务的大型数据集.这是一个示例数据:

a <- structure(list(ID = c("A1", "A2", "A3", "A1", "A1", "A2", "A4", "A5", "A2", "A3"), 
Type = c("A", "B", "C", "A", "A", "A", "B", "B", "C", "B"), 
Alc = c("E", "F", "G", "E", "E", "E", "F", "F", "F", "F"), 
Com = c("Y", "N", "Y", "N", "Y", "Y", "Y", "N", "N", "Y")),
.Names = c("ID", "Type", "Alc", "Com"), row.names = c(NA, -10L), class = "data.frame")
a

   ID Type Alc Com
1  A1    A   E   Y
2  A2    B   F   N
3 …
Run Code Online (Sandbox Code Playgroud)

r reshape

2
推荐指数
1
解决办法
727
查看次数

dplyr group_by abs()过滤数据

说我有如下数据

A <- c(1,1,1,2,2,2,3,3,3)
B <- c(1,0,0,1,0,0,1,0,0)
C <- c(8,7,6,8,7,8,9,9,11)

D <- data.frame(A,B,C)
D

library(dplyr)

E <- D %>%
  group_by(B) %>%
  filter(abs(diff(C)) <= 1)
Run Code Online (Sandbox Code Playgroud)

删除这些情况,以便删除黄色显示

在此输入图像描述

换句话说,对于每个a身份,当我们评估b=0相对于b=1,c超过差异1的任何值.

r subset dplyr

2
推荐指数
1
解决办法
539
查看次数

如何将字符串列表拆分为R中的奇数和偶数元素

对不起,我甚至没能完成这项任务的最基本部分.我有一个50长的字符串列表,我初始化一个空的向量25长,但即使手动将一个的第一个元素分配给另一个的第一个元素失败了:

> p$key
 [1] CA TX NY FL IL PA OH MI GA NC NJ VA MA WA IN AZ TN MO MD WI MN CO AL SC LA KY OR
[28] OK CT IA MS AR KS UT NV NM WV NE ID ME NH HI RI MT DE SD AK ND VT WY
50 Levels: AK AL AR AZ CA CO CT DE FL GA HI IA ID IL IN KS KY LA MA MD ME MI ... …
Run Code Online (Sandbox Code Playgroud)

string r initialization list vector

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

以编程方式为data.table中的列分配动态列名称

我想要做的是这样的事情:

DT[,diffs:=c(NA, diff(SPY_mid))]
Run Code Online (Sandbox Code Playgroud)

但在剧本中,事先不知道

DT[,diffs:=c(NA, diff(paste('SPY', '_mid', sep='')))]
Run Code Online (Sandbox Code Playgroud)

似乎不起作用.这也不是:

DT[,'diffs':=c(NA, diff(paste('SPY', '_mid', sep=''))), with=F]
Run Code Online (Sandbox Code Playgroud)

r data.table

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

删除少于n个值的列?

假设我有一个如下数据框:

df <- data.frame(v1 = sample(1:10, 100, replace = T), v2 = sample(LETTERS, 100, replace = T),
                 V3 = sample(letters, 100, replace = T), v4 = sample(1:15, 100, replace = T))
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的数据框df2只包含超过10个值的列.因此,在这个例子中它将是v2,v3和v4.我怎样才能做到这一点?在实践中,我的数据框有数千列.

我试过这个:

df2 <- df %>% select(which(length(unique(.))>10))
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

找到字符串中的大写字母

我想在每个字符串中找到大写字母,并计算每个字符串的数量,例如

t = c("gctaggggggatggttactactGtgctatggactac", "gGaagggacggttactaCgTtatggactacT", "gcGaggggattggcttacG")  

ldply(str_match_all(t,"[A-Z]"),length)
Run Code Online (Sandbox Code Playgroud)

当应用上述功能时,我的输出是

1 4 2
Run Code Online (Sandbox Code Playgroud)

但我的愿望输出是

[1] G -1

[2] G -1 C -1 T -2

[3] G -2

r plyr stringr

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

如果满足条件,则替换列的后续值

我有一个数据框,我想在符合条件的情况下将列的值替换为一定数量的行

示例数据帧

A     B      C

10    15     0
11    11     6
3     12     0
4     6      9
5     9      0
7     8      0
7     1      8
Run Code Online (Sandbox Code Playgroud)

如果C中任何行的值大于0,则接下来的5个C值需要替换为0,从而产生以下数据帧

A     B      C

10    15     0
11    11     6
3     12     0
4     6      0
5     9      0
7     8      0
7     1      0
Run Code Online (Sandbox Code Playgroud)

在R中没有循环的任何方法来实现这一点?

r

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

何时plyr比data.table更好?

这里更好的意思是更快或更容易阅读/更短的语法,或者它也可能意味着命令甚至不可行data.table.

我不plyr经常使用,想知道我是否应该这样做.因为我不使用它了很多,唯一的例子,我能想出的rbind.fill是,据我所知没有一个data.table模拟和我见过未便每隔例如两个正在做plyrdata.table,后者是更快,更容易阅读/更紧凑.

r plyr data.table

0
推荐指数
1
解决办法
3539
查看次数

标签 统计

r ×9

data.table ×3

dplyr ×2

plyr ×2

function ×1

initialization ×1

list ×1

reshape ×1

string ×1

stringr ×1

subset ×1

vector ×1