【问题标题】:Trouble sub-setting data.frame/not meaningful for factors error麻烦子设置data.frame/对因素错误没有意义
【发布时间】:2019-01-17 19:30:33
【问题描述】:

抱歉,我觉得有人问过这个问题,但我已经尝试了该网站上的多种解决方案,但仍然无法正常工作。我可能错过了什么。

我有一个包含 300 个 obs 和 4 个变量的 data.frame。一个变量是天数(1-300)的“天”我试图制作这个数据的一个子集,包括第 n 天之前的所有内容。我已经包含了所有代码,以防万一我做错了什么。我最初从一个更大的子集中获取了一个转换后的子集。这是我的代码的开头

    Data <- data.frame(t(Original.data[1:4,]))
    colnames(Data) <-c("ID","day","Week","SD")

下一行只是创造一个重复的ID号

    Data[,1] <- Data[1,4] 

最后,根据日期对我的数据进行子设置。这是我尝试过的所有内容

    New.Data <- Data[ which(Data$day<279),] 

给出 '

    New.Data <- Data[1:Data$day<'279'] 

我也试过这个不带引号并得到相同的“数值表达式有 328 个元素:只有第一个使用”错误。结果是一个空的data.frame

谢谢,如果这是一个简单的问题,我很抱歉,我还是 R 的新手。

编辑:我正在包括我的数据的示例

    v    ID  day  Week  SD
    V1   1   -14  -2    23
    V2   2   2    1     54
    .    .   .    .     .
    .    .   .    .     .
    V56  52  279  39    42
    .    .   .    .     .
    .    .   .    .     .
    V300 350 325 44    48

【问题讨论】:

    标签: r subset


    【解决方案1】:

    R 似乎暗示 Data$day 是一个因子变量而不是数字。试试typeof(Data$day) 看看 R 认为它是什么。

    先将其转换为字符,然后再转换为数字:

    Data$day <- as.numeric(as.character(Data$day))
    

    【讨论】:

    • 感谢您的回复!但是,当我转换为数字时,日期的值会发生变化。
    • 啊,对。如果它是一个因素,它将返回该值。我会编辑。
    【解决方案2】:

    确保天的列是数字向量。例如,您可以这样做:

     Data$day <- as.numeric(as.character(Data$day))
    

    那就试试吧

     New.Data <- Data[ which(Data$day<279),]
    

    如果这有帮助,请告诉我! :)

    【讨论】:

    • 刚刚看到亚当发布了同样的内容。是的,试试亚当和我说的,告诉我们进展如何!
    • 谢谢!,我尝试了另一个问题!查看我对亚当的其他回复
    • 啊,是的! as.character 是必需的!完全忘记了!
    猜你喜欢
    • 2018-08-07
    • 2013-08-05
    • 2014-07-06
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多