Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列更改为R中的行中的观察值_R_Pivot_Transpose - Fatal编程技术网

将列更改为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()