麻烦的子设置data.frame /对因子错误无意义

时间:2019-01-17 19:30:33

标签: r subset

对不起,我觉得有人问过这个问题,但是我在此站点上尝试了多种解决方案,但仍然对我不起作用。我可能会丢失一些东西。

我有一个带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

2 个答案:

答案 0 :(得分:1)

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

首先使用以下命令将其转换为字符,然后转换为数字:

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

答案 1 :(得分:0)

确保day列是数字矢量。例如,您可以执行以下操作:

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

然后尝试

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

让我知道这是否有帮助! :)