相关疑难解决方法(0)

DT [!(x ==.)]和DT [x!=.]不一致地处理x中的NA

这是我认为应该问这个问题的问题.我想在R-forge跟踪器中将其作为一个错误/不一致之前确认是否存在错误/不一致.

考虑一下data.table:

require(data.table)
DT <- data.table(x=c(1,0,NA), y=1:3)
Run Code Online (Sandbox Code Playgroud)

现在,要访问不是 0 的DT的所有行,我们可以通过以下方式执行:

DT[x != 0]
#    x y
# 1: 1 1
DT[!(x == 0)]
#     x y
# 1:  1 1
# 2: NA 3
Run Code Online (Sandbox Code Playgroud)

当基础逻辑操作等效时,访问DT[x != 0]DT[!(x==0)]给出不同的结果.

注:转换到这一个data.frame和运行这些操作会给结果彼此两个逻辑上是等价的操作相同,但结果是不同的两种data.table结果.有关原因的解释,请?`[`参阅本节NAs in indexing.

编辑:由于你们中的一些人已经强调要求平等data.frame,这里是data.frame上相同操作的输出片段:

DF <- as.data.frame(DT)
# check ?`[` under the section `NAs in indexing` as to why this happens
DF[DF$x != 0, …
Run Code Online (Sandbox Code Playgroud)

r dataframe data.table

21
推荐指数
2
解决办法
637
查看次数

由NaN进行的data.table子集不起作用

我在数据表中有一个包含NaN值的列.就像是:

my.dt <- data.table(x = c(NaN, NaN, NaN, .1, .2, .2, .3), y = c(2, 4, 6, 8, 10, 12, 14))
setkey(my.dt, x)
Run Code Online (Sandbox Code Playgroud)

我可以使用该J()函数来查找x列等于.2的所有实例

> my.dt[J(.2)]

     x  y
1: 0.2 10
2: 0.2 12
Run Code Online (Sandbox Code Playgroud)

但如果我尝试用NaN它做同样的事情就行不通.

> my.dt[J(NaN)]

     x  y
1: NaN NA
Run Code Online (Sandbox Code Playgroud)

我希望:

     x  y
1: NaN  2
2: NaN  4
3: NaN  6
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?我在data.table文档中找不到任何解释为什么会发生这种情况的事情(尽管可能只是因为我不知道该寻找什么).有什么方法可以得到我想要的东西吗?最后,我想NaN用零替换所有值,使用类似的东西my.dt[J(NaN), x := 0]

r data.table

5
推荐指数
1
解决办法
839
查看次数

r中显式行的行号

我需要为id分组的显式行获取行号.假设dataframe(df)如下所示:

 id  a   b 
 3   2   NA
 3   3   2
 3   10  NA
 3   21  0
 3   2   NA
 4   1   5
 4   1   0
 4   5   NA
Run Code Online (Sandbox Code Playgroud)

我需要创建一个列,它将给出行号序列,不​​包括大小写b == 0.

期望的输出:

 id  a   b   row
 3   2   NA   1
 3   3   2    2
 3   10  NA   3
 3   21  0    -
 3   2   NA   4
 4   1   5    1
 4   1   0    -
 4   5   NA   2
Run Code Online (Sandbox Code Playgroud)

我使用dplyr但无法实现相同,我的代码:

df <- df %>%
       group_by(id) %>%
       mutate(row = row_number(id[b …
Run Code Online (Sandbox Code Playgroud)

r row-number dataframe dplyr

3
推荐指数
1
解决办法
376
查看次数

标签 统计

r ×3

data.table ×2

dataframe ×2

dplyr ×1

row-number ×1