【发布时间】:2012-10-29 09:26:39
【问题描述】:
我有一个 R 数据框:
a <- 1:12
list <- c(rep("x",3),rep("y",4),rep("z",3),rep("x",2))
data <- data.frame(a,list)
data
a list
1 x
2 x
3 x
4 y
5 y
6 y
7 y
8 z
9 z
10 z
11 x
12 x
我想创建一个新列,每次“list”的值发生变化时从 1 开始计数,即在本例中:
b <- c(1:3,1:4,1:3,1:2)
data <- data.frame(a,list,b)
我远不是 R 方面的专家,而且我终其一生都无法找到一种有效的方法来做到这一点。我的主要问题似乎是 “list”的任何值都可以随时返回,但是对于一个值的块的长度没有规定。 有没有人有任何想法? 谢谢!
【问题讨论】:
-
只是一个评论:最好不要使用内置名称(如
data或list)作为变量名 - 如果稍后您想使用list()函数,你可能会遇到非常奇怪的错误。 -
事实上,大多数人都会避免称他们的狗为“狗”!例如。
-
是的,你是对的。从现在开始,我会牢记这一点。
标签: r