将一些观察结果移动到 R 中的新行?

Moving a Few Observations to New Rows in R?

我正在尝试根据数据框中现有行中的特定观察结果创建一些新列。下面,我举几行作为代表:

test.df <- tibble(can=c("can1","can2","unmarked","invalid","blank"),
             votes=c(177000,441000,11000,1300,20000))

这里,我想保留can列,但是把unmarkedinvalid列放在右边,如他们自己的新专栏。有没有一种方法可以根据观察类型(例如 unmarkedinvalid

来展开部分列

我试过使用spread(can,votes),但这显然为两个候选人都创建了一个列,这并不理想。

在此感谢任何帮助。谢谢!

我可以帮你完成大部分工作。在不了解您的用例的情况下,我不知道您想对未标记或无效做什么。我假设你的数据要大得多。这将使您得到罐头和选票,但由于 pivot_longer 将匹配行中未标记和无效的值,它会填充。

library(tidyverse)
test.df %>% 
  pivot_wider(names_from = "can",
              values_from = "votes") %>% 
  pivot_longer(c("can1", "can2", "blank"),
               names_to = "can",
               values_to = "votes")