【问题标题】:Select odd rows from a specific column in a dataframe从数据框中的特定列中选择奇数行
【发布时间】:2019-06-06 07:46:17
【问题描述】:

我有一个很大的df,其中有一个名为Amount 的特定numeric 列。

df = data.frame(Amount = c(as.numeric(1:14)), stringsAsFactors = FALSE)

我想选择奇数行。到目前为止,我已尝试使用以下语法,但总是收到以下错误消息:

df$Amount[c(FALSE, TRUE),]

df$Amount[c(FALSE, TRUE), ] 中的错误:维数不正确

seq_len(ncol(df$Amount)) %% 2

seq_len(ncol(df$Amount)) 中的错误: 参数必须可强制转换为非负整数 另外:警告信息: 在 seq_len(ncol(df$Amount)) : 'length.out' 参数使用的第一个元素

odd = seq(1,14,1)
df$Amount[odd,1]

P20$Journal.Amount[even, 1] 中的错误:维数不正确

P20$Journal.Amount[seq(2,length(14), 2),]

seq.default(2, length(14), 2) 中的错误:'by' 参数中的错误符号

我的问题是:有没有办法可以直接做到这一点?我尝试了以前发布的问题的解决方案,但到目前为止,我一直收到这些错误消息。 BaseR 最好。

【问题讨论】:

  • 您正在选择一个向量。所以,你不需要,df$Amount[c(FALSE, TRUE)]如果选择了行,那么df[c(FALSE, TRUE),, drop = FALSE]
  • df$amount 不是data.frame 而是一个向量,因此[ 的行为不同(不需要逗号):df$Amount[c(FALSE, TRUE)]

标签: r dataframe subset


【解决方案1】:

当有暗淡属性时使用row/column 索引。 vector 没有。

is.vector(df$Amount)

如果我们提取向量,那么只需使用行索引

df$Amount[c(FALSE, TRUE)]

如果我们想对数据集的行进行子集化,

df[c(FALSE, TRUE), 'Amount', drop = FALSE]

在上面的代码中,我们指定行索引(i),'j'作为列索引或列名,drop?Extract - 默认情况下drop = TRUE for data.frame . 因此,我们需要指定drop = FALSE 以不丢失维度并强制转换为向量)

【讨论】:

    猜你喜欢
    • 2022-07-08
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多