微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使R

如何解决使R

我正在尝试将data.frame(id,uerate,lnw,exper)中的4个变量(d)制成长格式。

我还想添加两个名为0/1DL的二进制(DE)列;如果长格式的value代表lnwDL==1DE==0,反之亦然。

我想知道如何正确指定tidyr::pivot_longer()以获得下面的预期输出

d <- read.csv("https://stats.idre.ucla.edu/wp-content/uploads/2016/02/wages_pp-1.txt")

select(d,id,exper) %>% pivot_longer(everything()) # tried without success

#### EXPECTED OUTPUT:

##      id uerate variable value DE DL
## 1    31   3.21      lnw 1.491  0  1
## 2    31   3.21      lnw 1.433  0  1
## 3    31   3.21      lnw 1.469  0  1
## 4    31   3.29      lnw 1.749  0  1
## 5    31   2.90      lnw 1.931  0  1
## 6    31   2.50      lnw 1.709  0  1
## 7    31   2.60      lnw 2.086  0  1
## 8    31   4.79      lnw 2.129  0  1
## 6403 31   3.21    exper 0.015  1  0
## 6404 31   3.21    exper 0.715  1  0
## 6405 31   3.21    exper 1.734  1  0
## 6406 31   3.29    exper 2.773  1  0
## 6407 31   2.90    exper 3.927  1  0
## 6408 31   2.50    exper 4.946  1  0
## 6409 31   2.60    exper 5.965  1  0
## 6410 31   4.79    exper 6.984  1  0

解决方法

我们select要关注的列,而不是everything()要用cols选择的列,它应该选择“ id”,“ uerate”({{ 1}}),然后-c(id,uerate)创建新列“ DE”和“ DL”

mutate

-输出

library(dplyr)
library(tidyr)
d %>%
   select(id,uerate,lnw,exper) %>% 
   pivot_longer(cols = -c(id,uerate),names_to = 'variable') %>% 
   mutate(DE = +(variable == 'exper'),DL =  +(!DE)) %>%
   arrange(id,variable)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。