假设我的面板数据安排如下:
| ID | Year | Var1 |
|----|------|------|
|----|------|------|
| 1 | 2010 | 0 |
| 1 | 2012 | 1 |
--------------------
| 2 | 2010 | 3 |
| 2 | 2012 | 2 |
--------------------
| 3 | 2010 | 1 |
| 3 | 2012 | 3 |
或者,在R中:
ID <- c(1, 1, 2, 2, 3, 3)
Year <- c(2010, 2012, 2010, 2012, 2010, 2012)
Var1 <- c(0, 1, 3, 2, 1, 3)
df <- data.frame(ID, Year, Var1)
我现在创建 Var2 ,当每个面板中第二个时间段的Var1大于上一个时间段的Var1时,有条件地分配1。
在示例表中,当每个ID的2012年Var1大于2010年Var1时,我将在新创建的Var2中分配1,否则分配0。
它看起来像这样:
| ID | Year | Var1 | Var2 |
|----|------|------|------|
|----|------|------|------|
| 1 | 2010 | 0 | 0 |
| 1 | 2012 | 1 | 1 |
---------------------------
| 2 | 2010 | 3 | 0 |
| 2 | 2012 | 2 | 0 |
---------------------------
| 3 | 2010 | 1 | 0 |
| 3 | 2012 | 3 | 1 |
创建Var2的R代码是什么样的?我想有一个简单的tidyverse方法。
答案 0 :(得分:1)
您可以使用<h2>Test upload ref save in firestore</h2>
<form #f="ngForm" [formGroup]="forma" (ngSubmit)="crearTest()" novalidate>
<input type="file" (change)="uploadFile($event)" />
<br>
<br>
<div>{{ uploadPercent | async }}</div>
<br>
<a [href]="downloadURL | async">{{ downloadURL | async }}</a>
<br>
<input type="text" formControlName="imagenDestacada" [value]="downloadURL | async" placeholder="url Image">
<br>
<br>
<!-- <button type="submit" [disabled]="!forma.valid">Crear Test</button> -->
</form>
<hr>
<ul>
<li *ngFor="let test of tests | async">Imagen: {{test.imagenDestacada}}</li>
</ul>
:
在diff
和tidyverse
中
group_by
或者在基数R中使用library(tidyverse)
df %>%
group_by(ID) %>%
mutate(Var2 = c(0, +(diff(Var1)) > 0))
## A tibble: 6 x 4
## Groups: ID [3]
# ID Year Var1 Var2
# <dbl> <dbl> <dbl> <dbl>
#1 1. 2010. 0. 0.
#2 1. 2012. 1. 1.
#3 2. 2010. 3. 0.
#4 2. 2012. 2. 0.
#5 3. 2010. 1. 0.
#6 3. 2012. 3. 1.
ave