相关疑难解决方法(0)

创建在面板数据组内的条件下重新启动的顺序计数器

我有一个面板数据集,我想为其创建一个计数器,该计数器随着面板中的每个步骤而增加,但只要发生某些情况就会重新启动.就我而言,我正在使用国家年度数据,并希望计算事件之间的年份.这是一个玩具数据集,其中包含我真实的主要特征:

df <- data.frame(country = rep(c("A","B"), each=5), year=rep(2000:2004, times=2), event=c(0,0,1,0,0,1,0,0,1,0), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个df$event在每个国家的一系列观察中都有关键的计数器.当我们开始观察每个国家时,时钟从1开始; 随着每年的过去,它增加1; 并且它会在1时重新启动df$event==1.所需的输出是这样的:

   country year event clock
1        A 2000     0     1
2        A 2001     0     2
3        A 2002     1     1
4        A 2003     0     2
5        A 2004     0     3
6        B 2000     1     1
7        B 2001     0     2
8        B 2002     0     3
9        B 2003     1     1
10       B 2004     0     2
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用getanIDsplitstackshape和一些变化ififelse …

r time-series dplyr

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

按组编号

假设我们有以下数据库:

ID  Shoot  hit
1     10    2
1      9    3
1      8    1
2     10    8
2      8    8
2     11   10
2      7    2
3      9    2
4      6    6
4      6    5
.
.
Run Code Online (Sandbox Code Playgroud)

我希望在每个组中分配数字,在这种情况下每个ID如下:

ID Shoot hit number.in.group
1   10     2    1
1    9     3    2
1    8     1    3
2   10     8    1
2    8     8    2 
2   11    10    3
2    7     2    4
3    9     2    1
4    6     6    1
4    6     5 …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
3
解决办法
1206
查看次数

从R中的向量创建频率计数

假设存在具有可能重复值的数值的向量

x <- c(1, 2, 3, 4, 5, 1, 2, 2, 3)
Run Code Online (Sandbox Code Playgroud)

我想创建另一个计数向量,如下所示.

  1. 它的长度和x.
  2. 对于每个唯一值x,第一个外观为1,第二个外观为2,依此类推.

我想要的新矢量是

1, 1, 1, 1, 1, 2, 2, 3, 2
Run Code Online (Sandbox Code Playgroud)

我需要一个快速的方法,因为x可能很长.

r vector

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

在R中按组向数据帧添加索引(或计数器)

我有一个像

ProjectID Dist
  1        x
  1        y
  2        z
  2        x
  2        h
  3        k
  ....     ....
Run Code Online (Sandbox Code Playgroud)

我想添加第三列,以便每个ProjectID都有一个递增计数器:

ProjectID Dist counter
  1        x     1
  1        y     2
  2        z     1
  2        x     2
  2        h     3
  1        k     3
  ....     ....
Run Code Online (Sandbox Code Playgroud)

我看了一下,seq rank还有其他一些地方,特别是看我是否可以使用ddply以帮助您:

df$counter <- ddply(df,.(projectID), function(x).....? )
Run Code Online (Sandbox Code Playgroud)

我想我可以调整此答案如何按组创建计数器/计数?但是更喜欢使用ddply之类的东西(我找不到与cumsum等效的东西,但是我认为这是相同的原理:在Pandas中按组创建整数递增的序列)。那会让我索引列表中的出现(例如在此列表上合并)。

indexing counter r plyr seq

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

计算R中值的出现次数

如果我在R中有一个数字向量

numbers <- c(1,1, 2,2,2, 3,3, 4,4,4,4, 1)
Run Code Online (Sandbox Code Playgroud)

我想返回一个向量,该向量提供沿向量累积值的次数.即

results <- c(1,2, 1,2,3, 1,2, 1,2,3,4, 3)
Run Code Online (Sandbox Code Playgroud)

r vector

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

在不等长度的许多行块内顺序编号

我的实际数据集由每个数据集的重复测量组成id,其中测量数量可能因人而异.一个简单的例子是:

dat <- data.frame(id = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L))
dat
##    id
## 1   1
## 2   1
## 3   1
## 4   1
## 5   1
## 6   1
## 7   2
## 8   2
## 9   3
## 10  3
## 11  3
Run Code Online (Sandbox Code Playgroud)

我试图按变量顺序编号datid.结果应该是:

dat
##    id s
## 1   1 1
## 2   1 2
## 3   1 3
## 4   1 4
## …
Run Code Online (Sandbox Code Playgroud)

r

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

在数据框中的组内运行计数

我有一个在线购物平台的订单数据库.

我正在使用的表格如下所示,其中每一行对应一个客户/项目/日期.

OrderHistory <- data.frame(date=c("2015-02-01", "2015-03-01", "2015-04-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-05-01"), 
            customer=c("A","A","A","B","B","B","B"),
            item=c("Candy", "Coffee", "Coffee", "Candy", "Candy", "Candy", "Coffee" ))
Run Code Online (Sandbox Code Playgroud)

我想得到的是每个成员订购特定物品的次数的运行计数,因此我可以分析哪些物品是由相同的客户重复订购的,哪些物品是一次订购而不是再次订购.

输出看起来像

out <- data.frame(date=c("2015-02-01", "2015-03-01", "2015-04-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-05-01"), 
              member=c("A","A","A","B","B","B","B"),
              item=c("Candy", "Coffee", "Coffee", "Candy", "Candy", "Candy", "Coffee" ),
              count=c(1,1,2,1,2,3,1))
Run Code Online (Sandbox Code Playgroud)

我想要一个dplyr解决方案,但我愿意接受任何建议!平台上的确切项目在不断变化,因此解决方案必须是动态的才能解决这个问题.

r dplyr

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

计算每个位置的出现次数

对不起,如果存在此问题.说我有一个矢量

value <- c("A", "A", "B", "C", "D", "A", "A", "B", "C", "D")
Run Code Online (Sandbox Code Playgroud)

我想计算每个位置的每个唯一值的数量,这样我就可以得到一个结果

c(1, 2, 1, 1, 1, 3, 4, 2, 2, 2)
Run Code Online (Sandbox Code Playgroud)

在R中有快速的方法吗?

r

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

R data.table 列,沿其他列中的唯一值计数

我有一些长格式的数据,我想使其变宽。问题是数据的格式没有一条信息可以轻松传播。为了解决这个问题,我必须在数据框中创建一列,从 1 到另一列中每个唯一条目的长度。

在下面的过程中,是否有使列“fid”的 data.table 方法?

library(data.table)
library(tidyverse)

# data:
df <- data.frame(class = c('1', '1', '1', '2', '3', '3'),
                 A = 1:6,
                 B = 11:16)

# create counting column
df <- df %>% group_by(class) %>% mutate(fid=1:n())

# spread using dcast
dcast(setDT(df), class ~ fid, value.var = c("A", "B")) 
Run Code Online (Sandbox Code Playgroud)

干杯

r data.table tidyr

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

如何使用 R 3.3.2 根据列值将索引列添加到数据框?

问题

给定列中的分类值,如何在 R 的数据框中创建索引列?

换句话说,假设我们有一个如下的数据框:

id cat 
1  A 
2  A 
3  A
4  B 
5  B 
6  C
7  C 
8  C 
9  C
10 C
Run Code Online (Sandbox Code Playgroud)

我们如何创建一个名为 rank 的列来执行以下操作:

id cat rank 
1  A   1 
2  A   2
3  A   3 
4  B   1 
5  B   2 
6  C   1 
7  C   2
8  C   3
9  C   4 
10 C   5
Run Code Online (Sandbox Code Playgroud)

尝试

假设数据帧被称为df。我尝试了以下方法:

  • 聚合(df,by = c('A','B','C'),长度)
  • 开始编写用于 lapply 的自定义函数,但遇到了太多边界情况。

这给了我不匹配的长度错误。显然,这里的想法是获取每个组的计数,然后编写一个函数,该函数可以使用 lapply 获取行值并继续计数,直到达到长度为止。

补充说明

我正在考虑放弃上述想法并按 cat 值将数据帧拆分为单独的较小数据帧。然后我将为每个被索引的数据帧创建一个等级变量。那么挑战就变成了,将所有数据帧值与新的排名列合并回一个数据帧的好方法是什么? …

indexing r dataframe

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

标签 统计

r ×10

dplyr ×2

indexing ×2

vector ×2

counter ×1

data.table ×1

dataframe ×1

plyr ×1

seq ×1

tidyr ×1

time-series ×1