如何解决使R
我正在尝试将data.frame(id,uerate,lnw,exper
)中的4个变量(d
)制成长格式。
我还想添加两个名为0/1
和DL
的二进制(DE
)列;如果长格式的value
代表lnw
,DL==1
和DE==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 举报,一经查实,本站将立刻删除。