R 创建给定两个变量的序列号
我有一个R 创建给定两个变量的序列号,r,plyr,R,Plyr,我有一个data.frame,看起来很像这个: pp <- data.frame(a=c(1,1,1,2,2,3), zing=c("a", "b", "c", "d", "e", "f")) pp a zing 1 a 1 b 1 c 2 d 2 e 3 f 感谢您的帮助。qq使用数据的方法。表: q <- transform(q, nr = ave(a, a, FUN = seq_a
data.frame
,看起来很像这个:
pp <- data.frame(a=c(1,1,1,2,2,3), zing=c("a", "b", "c", "d", "e", "f"))
pp
a zing
1 a
1 b
1 c
2 d
2 e
3 f
感谢您的帮助。
qq使用数据的方法。表
:
q <- transform(q, nr = ave(a, a, FUN = seq_along))
library(data.table)
##
q <- data.frame(
a=c(1,1,1,2,2,3),
zing=c("a", "b", "c", "d", "e", "f"),
stringsAsFactors=F)
setDT(q)
##
q[,nr:=1:.N,by=a]
##
> q
a zing nr
1: 1 a 1
2: 1 b 2
3: 1 c 3
4: 2 d 1
5: 2 e 2
6: 3 f 1
库(data.table)
##
q q
一种新的天然橡胶
1:1A
2:1b2
3:1C3
4:2d1
5:2e2
6:3f1
一种具有数据的方法。表
:
library(data.table)
##
q <- data.frame(
a=c(1,1,1,2,2,3),
zing=c("a", "b", "c", "d", "e", "f"),
stringsAsFactors=F)
setDT(q)
##
q[,nr:=1:.N,by=a]
##
> q
a zing nr
1: 1 a 1
2: 1 b 2
3: 1 c 3
4: 2 d 1
5: 2 e 2
6: 3 f 1
库(data.table)
##
q q
一种新的天然橡胶
1:1A
2:1b2
3:1C3
4:2d1
5:2e2
6:3f1
这里有另一个使用dplyr的选项:
library(dplyr)
pp %>% group_by(a) %>% mutate(nr = row_number())
如果您在处理大型数据集,dplyr和data.table都将比ave更高效。如果数据没有那么大,您可能不需要这些软件包。这里是使用dplyr的另一个选项:
library(dplyr)
pp %>% group_by(a) %>% mutate(nr = row_number())
如果您在处理大型数据集,dplyr和data.table都将比ave更高效。如果数据不是那么大,您可能不需要这些包。另一个选项是使用getanID
fromsplitstackshape
library(splitstackshape)
getanID(pp,'a')
# a zing .id
#1: 1 a 1
#2: 1 b 2
#3: 1 c 3
#4: 2 d 1
#5: 2 e 2
#6: 3 f 1
另一个选项是使用splitstackshape
library(splitstackshape)
getanID(pp,'a')
# a zing .id
#1: 1 a 1
#2: 1 b 2
#3: 1 c 3
#4: 2 d 1
#5: 2 e 2
#6: 3 f 1
q
也是用于退出R的函数,我建议您为变量使用另一个名称。q
也是用于退出R的函数,我建议您为变量使用另一个名称。如果pp
将更改为pp,您可以定义count Trypp%>%groupby(a)%%mutate,命令将如何更改(nr=min\u rank(zing))
如果pp
将更改为pp,则命令将如何更改您可以定义count Trypp%>%group\u by(a)%%>%mutate(nr=min\u rank(zing))