将列更改为R中的行中的观察值
我目前正努力将数据中的一列转换为一行作为观察值。以下是我的数据的典型示例:将列更改为R中的行中的观察值,r,pivot,transpose,R,Pivot,Transpose,我目前正努力将数据中的一列转换为一行作为观察值。以下是我的数据的典型示例: library(tidyverse) test_df <- tibble(unit_name=rep("Chungcheongbuk-do"),unit_n=rep(2), can=c("Cho Bong-am","Lee Seung-man","Lee Si-yeong","Shin Heung
library(tidyverse)
test_df <- tibble(unit_name=rep("Chungcheongbuk-do"),unit_n=rep(2),
can=c("Cho Bong-am","Lee Seung-man","Lee Si-yeong","Shin Heung-woo"),
pev1=rep(510014),vot1=rep(457815),vv1=rep(445955),
ivv1=rep(11860),cv1=c(25875,386665,23006,10409),
abstention=rep(52199))
在这里,弃权被视为候选人,在can
列中。因此,保留其余数据,弃权值是他们自己在cv1
列中的观察值
我尝试过使用
pivot\u
,但我不确定如何使用参数来获得我想要的。我还考虑过t()
将列转换成一行,但也很难将其重新插入到数据中。感谢您的帮助!谢谢 这里有一个策略,如果你有多个单位名称,它会起作用
test_df %>%
group_split(unit_name) %>%
map( function(group_data) {
slice(group_data, 1) %>%
mutate(can="abstention", cv1=abstention) %>%
add_row(group_data, .) %>%
select(-abstention)
}) %>%
bind_rows()
基本上,我们按单元名称将数据拆分,然后抓取每组的第一行并移动值。将其作为新行添加到每个组,然后重新组合所有组。再次感谢您提供了一个很棒的解决方案!对另一个变量进行一个小的更改,效果非常好!
test_df %>%
group_split(unit_name) %>%
map( function(group_data) {
slice(group_data, 1) %>%
mutate(can="abstention", cv1=abstention) %>%
add_row(group_data, .) %>%
select(-abstention)
}) %>%
bind_rows()