相关疑难解决方法(0)

R中有这样的"colsd"吗?

我在我的代码中使用colSums但我还需要总和旁边的标准偏差.我在互联网上搜索,发现这个页面只包含:

colSums
colMeans
Run Code Online (Sandbox Code Playgroud)

http://stat.ethz.ch/R-manual/R-devel/library/base/html/colSums.html

我试过这个:

colSd
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

Error: could not find function "colSd"
Run Code Online (Sandbox Code Playgroud)

我如何做同样的事情,但标准偏差:

colSd
Run Code Online (Sandbox Code Playgroud)

这是代码:

results <- colSums(x,na.rm=TRUE)#### here I want colsd
Run Code Online (Sandbox Code Playgroud)

r

23
推荐指数
5
解决办法
2万
查看次数

使用`by = .I`在data.table中进行行操作

这是关于行操作的一个很好的解释data.table

我想到的另一种选择是id为每一行使用唯一的,然后使用by参数应用一个函数.像这样:

library(data.table)

dt <- data.table(V0 =LETTERS[c(1,1,2,2,3)],
                 V1=1:5,
                 V2=3:7,
                 V3=5:1)

# create a column with row positions
dt[, rowpos := .I]

# calculate standard deviation by row
dt[ ,  sdd := sd(.SD[, -1, with=FALSE]), by = rowpos ] 
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 有没有理由不使用这种方法?也许其他更有效的替代品?

  2. 为什么使用by = .I不起作用?

    dt[ , sdd := sd(.SD[, -1, with=FALSE]), by = .I ]

r data.table

13
推荐指数
1
解决办法
3662
查看次数

逐行测试多个(并非所有)列是否相等

我想按行检查多列是否全部相等。我想出了一种复杂的方法来计算每组每个值的出现次数。但这似乎有些……麻烦。

样本数据

sample_df <- data.frame(id = letters[1:6], group = rep(c('r','l'),3), stringsAsFactors = FALSE)
set.seed(4)
for(i in 3:5) {
  sample_df[i] <-  sample(1:4, 6, replace = TRUE)
  sample_df
}
Run Code Online (Sandbox Code Playgroud)

期望的输出

library(tidyverse)    
sample_df %>% 
  gather(var, value, V3:V5) %>% 
  mutate(n_var = n_distinct(var)) %>% # get the number of columns
  group_by(id, group, value) %>% 
  mutate(test = n_distinct(var) == n_var ) %>% # check how frequent values occur per "var" 
  spread(var, value) %>%
  select(-n_var)

#> # A tibble: 6 x 6
#> # Groups:   id, group …
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×3

data.table ×1