小编bzi*_*ggy的帖子

跟踪每一集的第一次发生

我目前正在使用 R 来处理如下所示的数据集:

age  ep  
 1    0   
 2    0   
 3    1   
 4    1   
 5    1   
 6    1   
 7    0   
 8    0   
 9    1   
10    1   
11    0   
Run Code Online (Sandbox Code Playgroud)

我想创建一个变量来跟踪每个 ep=1 系列中第一次出现的 ep=1。这些系列的第一个 ep=1 之前的 ep=0 和每个系列的最后一个 ep=1 之后的 ep=0。

我希望数据集在处理后看起来像这样:

 age  ep  first
 1    0   NA
 2    0   NA
 3    1   1
 4    1   NA
 5    1   NA
 6    1   NA
 7    0   NA
 8    0   NA
 9    1   1
10    1   NA
11    0   NA
Run Code Online (Sandbox Code Playgroud)

我在数据表中工作,因为这个数据集相当大,所以我更喜欢使用数据表的代码处理数据,但是如果这不可能,我可以转换为数据框并使用其他代码。任何帮助将不胜感激。

r data.table

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

R:按 id 按顺序将两个日期列合并为一个

我目前在数据表中使用 R 并且有两个日期列(first_day 和 last_day),我需要将它们合并到一个日期列(日期)中。需要这样做,以便列具有按组 (id) 从最小到最大的日期。

这是我正在使用的数据:

ID    first_day    last_day
1     1/12/2005    1/15/2005
2     2/15/2006    2/19/2006
2     3/8/2006     3/12/2006
3     1/9/2008     1/13/2008
Run Code Online (Sandbox Code Playgroud)

这是我试图让结果看起来像的内容:

ID    first_day    last_day    Date
1     1/12/2005    1/15/2005   1/12/2005 
1     1/12/2005    1/15/2005   1/15/2005
2     2/15/2006    2/19/2006   2/15/2006
2     2/15/2006    2/19/2006   2/19/2006
2     3/8/2006     3/12/2006   3/8/2006
2     3/8/2006     3/12/2006   3/12/2006
3     1/9/2008     1/13/2008   1/9/2008
3     1/9/2008     1/13/2008   1/13/2008
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助!

r data.table

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

do.call语句的格式

我试图了解如何在语句中正确格式化 lapply、rbind 和 do.call 的组合,但无法使语句正常运行。我提供了一个简单的示例函数和数据,我用它们来尝试理解格式。我完全理解我提供的场景可以使用更简单的方法来运行,这样做的目的是简单地理解格式以及如何在自定义函数上使用 lapply 和 rbind。

这是一些测试数据:

facility_id  patient_number  test_result
123          1000            25
123          1000            30
25           1001            12
25           1002            67
25           1010            75
65           1009            8
22           1222            95
22           1223            89
Run Code Online (Sandbox Code Playgroud)

我本质上是尝试使用设施 id 值列表对自定义函数内的数据进行子集化,然后希望将自定义函数生成的每个数据表绑定在一起。

这是我使用过的代码:

facilities_id_list<-c(123, 25)
facility_counts<-function(facilities_id_list){
  facility<-facilities_id_list[[i]]
  subset<-data[facility_id==facility]
}

results <- do.call("rbind", lapply(seq_along(facilities_id_list), function(i) facility_counts)
Run Code Online (Sandbox Code Playgroud)

我希望达到的结果:

facility_id  patient_number  test_result
123          1000            25
123          1000            30
25           1001            12
25           1002            67
25           1010            75
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我需要更改格式吗?

r apply rbind do.call

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

标签 统计

r ×3

data.table ×2

apply ×1

do.call ×1

rbind ×1