【问题标题】:Moving a Few Observations to New Rows in R? [closed]将一些观察结果移动到 R 中的新行? [关闭]
【发布时间】:2020-05-19 20:13:50
【问题描述】:

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

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

在这里,我想保留 can 列,但将 both unmarkedinvalid 列放在右侧,作为它们自己的新列。有没有办法根据观察类型(例如unmarkedinvalid)展开列的各个部分?

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

感谢您的帮助。谢谢!

【问题讨论】:

  • 你能显示预期的输出吗
  • 我正在寻找一个包含以下列的表格:can、votes、unmarked、invalid,它们各自的值在上面的 test tibble 中。
  • 谢谢,如果您可以在预期的输出中显示值,这将有助于交叉匹配。
  • 当然。我的目标是:can=c(can1,can2,blank), votes=c(177000,441000,20000), unmarked=c(11000,NA,NA), invalid=c(1300,NA,NA)

标签: r data-manipulation spread


【解决方案1】:

我可以带你去那里的大部分路。在不知道您的用例的情况下,我不知道您想对未标记或无效做什么。我假设您的数据要大得多。这将为您提供 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") 

【讨论】:

猜你喜欢
  • 2021-06-27
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
  • 2017-09-14
相关资源
最近更新 更多