【问题标题】:How to delete a single value within a data.frame如何删除 data.frame 中的单个值
【发布时间】:2013-10-21 13:12:03
【问题描述】:

我想删除 data.frame 中单元格的单个值。该值是一个因子(数字)

我尝试像这样访问值:

which(colnames(df) == "variable.name")
which(rownames(df) == "row.name")

df[i, j] <- NULL

我还试图通过

【问题讨论】:

  • 如果你知道你的价值指数,试试df[row,column] &lt;- NA。如果您知道值,请尝试df[df == value] &lt;- NA
  • 那行得通,谢谢。我怎样才能让单元格为空?
  • df[i,j]&lt;-"" 将清空单元格
  • @Metrics - 这取决于 OP 所说的“空”是什么意思。如果您将单元格设置为'',则该单元格存在一个character 元素。实际上,'' &lt; 0 返回 TRUE。在我看来,使用NA 更安全。事实上,由于 dataframematrix 需要相等长度的行和列,因此您不能拥有真正的“空”单元格(即长度为零)

标签: r dataframe unique na


【解决方案1】:

NULL 和 NA 之间存在显着差异。

NULL是一个对象,通常用来表示变量不包含对象。

NA 是一个,通常表示“此处缺少数据项”。

总的来说,数据框是等长向量的列表。 R 列表是可以包含其他对象的对象,而 R 向量是只能包含值的对象。因此,您可以拥有 NULL 列表,但不能拥有 NULL 向量。

在您的示例中,您尝试将 NULL 对象放入矢量对象(df$jdf[,j]df[[j]]),它是数据框的一部分。由于矢量对象不能包含其他对象(仅值),因此分配失败。

如 cmets 中所述,df[i, j] &lt;- NA 将在所需位置的数据框中放置一个 NA 值。这可能是表示空虚的最佳方式。

【讨论】:

    【解决方案2】:

    感谢您分享您的代码。我试过了,但我遇到了一些错误。 我尝试将单元格值从“无”更改为 NA,然后将变量转换为数字:

    levels(data$Impact.Factor)
    which(colnames(data) == "Impact.Factor")
    #which(rownames(data) =="None" )--> did not work
    which(grepl("None", data$Impact.Factor))
    #df[row,column] <- NA
    data[ 203,12] <- NA
    data$Impact.Factor<-as.numeric(data$Impact.Factor)
    

    【讨论】:

    • 您好 Mohammed,请勿使用回答功能提出相关问题。最好用一个可重复的例子发布一个单独的问题并删除这个问题。试试这个:as.character(data$Impact.Factor)。然后将 "None" 替换为 NA_character_ 并尝试将变量更改为数字。如果您使用参数 stringsAsFactors = FALSE 将数据读入 r,您可以避免字符变量成为因子。我想这对你来说会更好。
    猜你喜欢
    • 2013-05-07
    • 2013-01-24
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多