相关疑难解决方法(0)

如何在data.frame中找到元素的第一个和最后一个出现位置?

我已经详尽地搜索了FIRST的直接翻译.最后.SAS DATA步骤中的指针但似乎无法找到一个.对于那些不熟悉SAS的人,FIRST.是一个布尔值,用于标识表和LAST中给定元素的第一个外观.是一个标识最后一个外观的布尔值.例如,考虑以下排序表:

V1    V2    V3
1     1     1
1     1     2
1     2     3
1     2     4
2     3     5
2     3     6
2     4     7
2     4     8
3     5     9
3     5     10
3     6     11
3     6     12
Run Code Online (Sandbox Code Playgroud)

因为SAS DATA逐行读取表,所以我可以使用如下语句:

IF FIRST.V1 THEN DO ...
Run Code Online (Sandbox Code Playgroud)

当且仅当这是第一次在V1中遇到观察时,FIRST.V1将返回TRUE.换句话说,它将为V1 [1](第一次出现'1'),V1 [5](第一次出现'2')和V1 [9](第一次出现'3')返回true ).最后.指针以类似的方式起作用,但具有该元素的最终外观.

R中有什么模仿这个吗?

r sas dataframe

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

Dummy为系列中的第一个新元素

假设我有一个持续几个时期的变量.就像我有一个Ipod的年数.所以我从2001年到2004年都有Ipod第一代,然后在2005年我得到了Ipod 2等等.所以我的数据框看起来像:

  2001 Ipod1
  2002 Ipod1
  2003 Ipod1
  2004 Ipod1
  2005 Ipod2
  2006 Ipod2
  2007 Ipod2
  2008 Ipod2
  2009 Ipod3
  2010 Ipod3
Run Code Online (Sandbox Code Playgroud)

我想要的是在新变量到来的时候创建一个假人,所以我会得到:

  Year  Var  Dummy
  2001 Ipod1  1
  2002 Ipod1  0
  2003 Ipod1  0
  2004 Ipod1  0
  2005 Ipod2  1
  2006 Ipod2  0
  2007 Ipod2  0
  2008 Ipod2  0
  2009 Ipod3  1
  2010 Ipod3  0
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经能够做到这一点:

df = structure(list(Year = 2001:2010, Var = structure(c(1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 3L, 3L), .Label = c("Ipod1", "Ipod2", "Ipod3"
), …
Run Code Online (Sandbox Code Playgroud)

r time-series plyr

5
推荐指数
2
解决办法
156
查看次数

标签 统计

r ×2

dataframe ×1

plyr ×1

sas ×1

time-series ×1