【问题标题】:creating a new dataframe based on differen data in rows根据行中的不同数据创建新的数据框
【发布时间】:2019-04-17 12:05:06
【问题描述】:

我正在将操作从 Excel Power Query 转移到 R,这要快得多。结果是我有一个包含数千行的数据框,但是,我希望创建一个示例数据框,其中包含 15 列中 5:10 列的每个不同选项(因子级别)的一行,因此人们可以手动测试每个选项(比如真值表?)

我可以手动执行此操作,但我想知道是否可以自动执行。

    col1     col2       col3
    name     option1    option2
    name2    option1    option2
    name3    option1    option2
    name4    option2    option1

会被转换成这样的数据框:

    col1     col2       col3
    name     option1    option2
    name4    option2    option1   

任何帮助将不胜感激。

克里斯

【问题讨论】:

  • 见?duplicated

标签: r dataframe rstudio tidyverse


【解决方案1】:

与dplyr:

library(dplyr)
d %>% distinct(col2, col3, .keep_all=T)

#    col1    col2    col3
# 1  name option1 option2
# 2 name4 option2 option1

如果您只想将distinct 用于列的子集,您可以先匹配一个正则表达式:

d %>% 
    select(matches("[5-10]|[1]")) %>%  # this selects only rows from 5 to 10 or 1 in the name
    distinct(.keep_all=T) 

这将包含您的第一行 "col1",以及所有行 "col5" 到 "col10"。

【讨论】:

  • 感谢您的快速回复。在我的数据框中,我最终仍然有 19000 行(从 39,000 行)我在一个大约 100 到 200 行的表之后,但也许我的数学很差。而不是为每个不同的选项都有一个新的行,而是有可以处理每行许多选项的行,所以减少行数......这有什么意义吗?
  • mm 不,我很抱歉,但你需要更清楚。尝试使用可重现的示例更新您的问题,在该示例中显示您的期望。
猜你喜欢
  • 2021-08-24
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
相关资源
最近更新 更多