【问题标题】:Sort a data frame for a value [closed]对值的数据框进行排序[关闭]
【发布时间】:2017-07-22 03:06:06
【问题描述】:

我真的不知道如何翻译这个问题,所以我只是解释一下。

我有这个数据集:

    > f1
    species weight length3  sex
1         1  242.0    30.0 <NA>
2         1  290.0    31.2 <NA>
3         1  340.0    31.1 <NA>
4         1  363.0    33.5 <NA>
5         1  430.0    34.0 <NA>
6         1  450.0    34.7 <NA>
7         1  500.0    34.5 <NA>

(总共 158 行)。物种从 1 到 7。现在我想要一个只有 7 种的子集。我已经尝试过

f1["species" == 7]

以下方法也有效

f1[104:159,]

但这仅在此数据集排序良好时才有效,例如,如果以任何其他随机方式分布的 1-7 中的值将不起作用。

但不幸的是,这不起作用。有人可以帮忙吗?

【问题讨论】:

  • 您需要一个逗号,f1[f1$species==7,]f1[f1[["species"]]==7,]

标签: r dataframe indices


【解决方案1】:

您对数据框的索引错误。索引时,你应该使用[row, column]

因此,在您的示例中,您应该使用f1[f1$species==7,]

解释:

f1$species==7 返回由TRUEFALSE 值组成的向量。使用该向量,您可以索引数据框行(仅 TRUE 值)。

, 之后不指定任何列,这将(默认情况下)获取数据框中的所有可用列。

【讨论】:

  • f1[f1$species==7,] 做到了!
【解决方案2】:

试试这个:

library(dplyr)
df <- f1 %>% filter(species == 7)

或者

df <- subset(f1, species == 7)

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 2016-12-27
    • 1970-01-01
    • 2018-10-17
    • 2021-12-07
    • 1970-01-01
    • 2019-10-12
    • 2020-05-15
    • 2022-11-12
    相关资源
    最近更新 更多