正确的观察数

时间:2018-11-15 14:03:20

标签: r count subset

我正在R上对数据集运行一些统计信息,以查看组之间是否存在任何差异。所以我已经完成了以下

DATA$time <- difftime(data$endtime, data$starttime, unites ="mins")

然后我想进行分组,这样我只能得到积极的时间

DATA$time1 <- difftime(data$endtime, data$starttime, unites ="mins") [DATA$time>0 & DATAtime < 2000] 

这时我收到一条警告消息。

In `[.data.table`(x,j =`(name, value=value):

Supplied 43242 items to be assigned to 45649 items of column 'time'
(recycled leaving remainder of 2407 items).

但是我仍然能够运行下一行代码...

DATA[,.(numbers=sum(length(!is.na(Agegroup))), min=min(time1, na.rm =
T), mean=mean(time1, na.rm = T),max=max(time1, na.rm =
T),SEM=sd(time1, na.rm = T)/sqrt(length(time1))), by= DATA$Agegroup]

#DATA  numbers   min       mean         max      SEM 
#1: 0  42897   1 mins    609.4079 mins 1439 mins 1.500116 
#2: 4  1525    5 mins    615.8830 mins 1430 mins 8.004109 
#3: 5  286     80 mins   592.0000 mins 1430 mins 19.020898 
#4: 3  796     5 mins    629.2510 mins 1430 mins 11.013346 
#5: 7  16      225 mins  596.9231 mins 1100 mins 62.248533 
#6: 1  26      250 mins  624.1667 mins 1315 mins 63.108800 
#7: 2  16      90 mins   567.8571 mins 1050 mins 88.852221 
#8: 6  87      50 mins   651.3519 mins 1430 mins 35.799050

我有两个问题。

1)如何获得R来返回数字作为用于计算的数字?  -当我加所有数字时,我得到45649,但我假设我应该得到43242?或如何运作?如果没有,那么剩余的2407是什么?如果它们不符合我的子集要求,如何从统计数据中将它们删除?

2)是否可以让R按Agegroup的顺序返回结果?现在顺序是0,4,5,3,7,1,2,6我希望是1-7

在此先感谢您提供任何可能的帮助或指导。

2 个答案:

答案 0 :(得分:0)

DATA$time1 <- difftime(data$endtime, data$starttime, unites ="mins") [DATA$time>0 & DATAtime < 2000]试图将结果分配给较小的data.table。这就是错误消息的意思。如果您考虑一下,这是有道理的,因为您是根据某些条件进行子集设置,但又将其放回data.table

的相同大小

您可以在控制台中像这样检查difftime的返回值:

X <-  difftime(data$endtime, data$starttime, unites ="mins") [DATA$time>0 & DATAtime < 2000]
length(X)
X

您应该研究使用dplyr库。他们对初学者更加友好。

您可以尝试以下方法来实现所需的目标:

library(dplyr)
data %>%mutate(time = difftime(endtime, starttime, unit ="mins")) %>%
mutate(time1 = ifelse((time > 0 && time < 2000), difftime(endtime, starttime, unit ="mins"), NA)

您可以使用arrange函数进行排序

这里是dplyr备忘单的链接 https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

答案 1 :(得分:0)

基本上发生的是,当您创建第二个向量 Dim path As String = "C:\Users\ShkelzenTarja\projekt\CDR_v3_1\CDR\test2.xml" ' "put path to xml file here" Dim xe As XElement xe = XElement.Load("C:\Users\ShkelzenTarja\projekt\CDR_v3_1\CDR\test2.xml") Dim sectn As XElement = (From el In xe...<code> Select el Take 1).FirstOrDefault If sectn IsNot Nothing Then 'did we get a code 'yes sectn = sectn.Parent 'the section ' End If If sectn IsNot Nothing Then 'did we get a section 'yes For Each tr As XElement In sectn...<table>.<tbody>.<tr> For Each td As XElement In tr.<td> Debug.WriteLine(td.Value) Next Next End If 时,生成的数据子集比存在的另一个向量(DATA$time1)短,因此R回收了第一个数字来自(DATA$time)的值来填充剩余的空白向量空间,从而使2407未使用。发生这种情况是因为您有原子矢量。

您可能会发现,删除不需要的变量比保留变量要容易得多,而不是尝试选择想要的变量。很难说出在没有最少示例数据集的情况下这是如何工作的,但是您可能不得不将数据强制转换为矩阵或使用将数据强制转换为非矢量形式的函数。