我有一个面板数据集,我想为其创建一个计数器,该计数器随着面板中的每个步骤而增加,但只要发生某些情况就会重新启动.就我而言,我正在使用国家年度数据,并希望计算事件之间的年份.这是一个玩具数据集,其中包含我真实的主要特征:
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)
我已经尝试使用getanID从splitstackshape和一些变化if和ifelse …
假设我们有以下数据库:
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) 假设存在具有可能重复值的数值的向量
x <- c(1, 2, 3, 4, 5, 1, 2, 2, 3)
Run Code Online (Sandbox Code Playgroud)
我想创建另一个计数向量,如下所示.
x.x,第一个外观为1,第二个外观为2,依此类推.我想要的新矢量是
1, 1, 1, 1, 1, 2, 2, 3, 2
Run Code Online (Sandbox Code Playgroud)
我需要一个快速的方法,因为x可能很长.
我有一个像
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中按组创建整数递增的序列)。那会让我索引列表中的出现(例如在此列表上合并)。
如果我在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) 我的实际数据集由每个数据集的重复测量组成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)
我试图按变量顺序编号dat行id.结果应该是:
dat
## id s
## 1 1 1
## 2 1 2
## 3 1 3
## 4 1 4
## …Run Code Online (Sandbox Code Playgroud) 我有一个在线购物平台的订单数据库.
我正在使用的表格如下所示,其中每一行对应一个客户/项目/日期.
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解决方案,但我愿意接受任何建议!平台上的确切项目在不断变化,因此解决方案必须是动态的才能解决这个问题.
对不起,如果存在此问题.说我有一个矢量
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中有快速的方法吗?
我有一些长格式的数据,我想使其变宽。问题是数据的格式没有一条信息可以轻松传播。为了解决这个问题,我必须在数据框中创建一列,从 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 的数据框中创建索引列?
换句话说,假设我们有一个如下的数据框:
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。我尝试了以下方法:
这给了我不匹配的长度错误。显然,这里的想法是获取每个组的计数,然后编写一个函数,该函数可以使用 lapply 获取行值并继续计数,直到达到长度为止。
我正在考虑放弃上述想法并按 cat 值将数据帧拆分为单独的较小数据帧。然后我将为每个被索引的数据帧创建一个等级变量。那么挑战就变成了,将所有数据帧值与新的排名列合并回一个数据帧的好方法是什么? …