[英]Changing a Column to an Observation in a Row in R
我目前正在努力將我的數據中的一列轉換為一行作為觀察。 以下是我的數據的代表性示例:
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))
如上所示, abstention
列存在於我的數據框的末尾,我希望我的數據如下所示:
library(tidyverse)
desired_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","abstention"),
pev1=rep(510014),vot1=rep(457815),vv1=rep(445955),
ivv1=rep(11860),cv1=c(25875,386665,23006,10409,52199))
在這里,棄權被視為候選人,在can
列中。 至此,數據的rest保持不變,棄權值是自己在cv1
列中觀察到的。
我曾嘗試使用pivot_wider
,但我不確定如何使用 arguments 來獲得我想要的東西。 我還考慮過t()
將列轉換為一行,但也很難將其重新插入我的數據中。 任何幫助表示贊賞! 謝謝!
這是一個策略,如果您有多個 unit_names 將起作用
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()
基本上我們按 unit_name 拆分數據,然后我們抓取每個組的第一行並移動值。 Append 即為每個組的新行,然后重新組合所有組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.