小编Aru*_*run的帖子

数据框所有行的平均列值

我有一个数据框,我从这样的文件中读取:

name, points, wins, losses, margin
joe, 1, 1, 0, 1
bill, 2, 3, 0, 4
joe, 5, 2, 5, -2
cindy, 10, 2, 3, -2.5
Run Code Online (Sandbox Code Playgroud)

等等

我想在这些数据的所有行中平均列值,是否有一种简单的方法在R中执行此操作?

例如,我想获得所有"Joe's"的平均列值,如下所示

joe, 3, 1.5, 2.5, -.5
Run Code Online (Sandbox Code Playgroud)

aggregate r dataframe

9
推荐指数
2
解决办法
9456
查看次数

基于第二数据帧中的值过滤数据帧

我有2个数据框:

at1 = data.frame(ID = c("A", "B", "C", "D", "E"), Sample1 = rnorm(5, 50000, 2500),
      Sample2 = rnorm(5, 50000, 2500), Sample3 = rnorm(5, 50000, 2500),
      row.names = "ID")

  Sample1  Sample2  Sample3
A 52626.55 51924.51 50919.90
B 51430.51 49100.38 51005.92
C 50038.27 52254.73 50014.78
D 48644.46 53926.53 51590.05
E 46462.01 45097.48 50963.39

bt1 = data.frame(ID = c("A", "B", "C", "D", "E"), Sample1 = c(0,1,1,1,1),
      Sample2 = c(0,0,0,1,0), Sample3 = c(1,0,1,1,0), 
      row.names = "ID")

   Sample1 Sample2 Sample3
A       0       0       1
B …
Run Code Online (Sandbox Code Playgroud)

r subset dataframe

9
推荐指数
3
解决办法
1622
查看次数

警告信息:在rbindlist(allargs)中:强制引入的NA:data.table中可能出现的错误?

在分析一些数据时,我遇到了警告信息,我怀疑这是一个错误,因为它是一个非常简单的命令,我曾多次使用过.

Warning message:
In rbindlist(allargs) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

我能够重现错误.这是一个代码,您应该能够重现错误.

# unique random names for column V1
set.seed(45)
n <- sapply(1:500, function(x) {
    paste(sample(c(letters[1:26]), 10), collapse="")
})
# generate some values for V2 and V3
dt <- data.table(V1 = sample(n, 30*500, replace = TRUE), 
                 V2 = sample(1:10, 30*500, replace = TRUE), 
                 V3 = sample(50:100, 30*500, replace = TRUE))
setkey(dt, "V1")

# No warning when providing column names (and right results)
dt[, list(s = sum(V2), m = mean(V3)),by=V1]

#              V1 …
Run Code Online (Sandbox Code Playgroud)

r data.table

9
推荐指数
1
解决办法
2483
查看次数

使用ggplot时,无法在r中标记多面板图形

对不起这个可能很简单的问题.我是一名程序员,虽然我很少处理图形,并且在用这个问题撕掉我的头发几个小时之后,是时候得到一些帮助了.我正在使用ggplot在r中创建一个多面板图,但是在使用ggplot时,我无法找到在图之外显示图形标签的方法.

这是我希望我的代码做的事情:

par(mfrow = c(1, 2), pty = "s", las = 1, mgp = c(2, 0.4, 0), tcl = -0.3)
qqnorm(rnorm(100), main = "")
mtext("a", side = 3, line = 1, adj = 0, cex = 1.1)
qqnorm(rnorm(100), main = "")
mtext("b", side = 3, line = 1, adj = 0, cex = 1.1)
Run Code Online (Sandbox Code Playgroud)

如何将这些"a"和"b"标签放在这些代码类型的上述代码所创建的图形位置:

df = data.frame(gp = factor(rep(letters[1:3], each = 10)), y = rnorm(30))
p = ggplot(df) + geom_point(aes(x = gp, y = y))
p2 = ggplot(df) + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

9
推荐指数
1
解决办法
4109
查看次数

何时在'strsplit'中设置'perl = TRUE'不起作用(按预期或根本不起作用)?

我只是做了一些基准测试,而试图优化一些代码,并指出,strsplitperl=TRUE比跑步strsplitperl=FALSE.例如,

set.seed(1)
ff <- function() paste(sample(10), collapse= " ")
xx <- replicate(1e5, ff())

system.time(t1 <- strsplit(xx, "[ ]"))
#  user  system elapsed 
# 1.246   0.002   1.268 

system.time(t2 <- strsplit(xx, "[ ]", perl=TRUE))
#  user  system elapsed 
# 0.389   0.001   0.392 

identical(t1, t2) 
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

所以我的问题(或者更确切地说是标题中的问题的变体)是,在什么情况下绝对需要perl=FALSE(省略fixeduseBytes参数)?换句话说,我们不能用perl=TRUE它做什么可以通过设置来完成perl=FALSE

regex pcre r

9
推荐指数
1
解决办法
464
查看次数

如何使用R删除具有0值的行

您正在使用基因表达矩阵,片段计数来计算差异表达的基因.我想知道如何删除值为0的行.然后我的数据集将是紧凑的,并且我将使用此矩阵为下游分析提供更少的虚假结果.

输入

gene    ZPT.1   ZPT.0   ZPT.2   ZPT.3   PDGT.1  PDGT.0
XLOC_000001 3516    626 1277    770 4309    9030
XLOC_000002 342 82  185 72  835 1095
XLOC_000003 2000    361 867 438 454 687
XLOC_000004 143 30  67  37  90  236
XLOC_000005 0   0   0   0   0   0
XLOC_000006 0   0   0   0   0   0
XLOC_000007 0   0   0   0   1   3
XLOC_000008 0   0   0   0   0   0
XLOC_000009 0   0   0   0   0   0
XLOC_000010 7   1   5   3   0   1
XLOC_000011 …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics

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

使用另一个数据表中的列中的值更新一个数据表中的一列NA

我在这个主题上看过类似的帖子,但无法理解解决方案.基本上我有一个数据表(DT1)与分数和一些NA.只要有'NA',我想要一个引用另一个数据(DT2)表的过程,该表在两个表(通道)中都有一个公共列,然后使用DT2的得分列值更新DT1中的NA.我正在选择一个数据表类,因为我认为它是一个有效的选择.

DT1

         tract CreditScore    
1: 36107020401         635  
2: 36083052403          NA  
3: 36091062602          NA  
4: 36067013000          NA  
5: 36083052304          NA  
Run Code Online (Sandbox Code Playgroud)

DT2

         tract CreditScore  
1: 36107020401         635  
2: 36083052403         650  
3: 36091062602         335  
4: 36067013000         777  
5: 36083052304         663  
Run Code Online (Sandbox Code Playgroud)

r reference data.table

9
推荐指数
1
解决办法
1562
查看次数

dplyr mutate的data.table替代方案?

我正在学习R而且我不确定在dplyr或data.table上标准化是否有意义.Dplyr语法非常好,但据我所知,它会在每个操作上复制数据帧,这是(或可能是)一个缺点.

我无法弄清楚的一件事是mutate的替代方案.

如果我有

df %>% group_by(foo) %>% mutate(
    bar  = cumsum(baz),
    q    = bar * 3.14)
Run Code Online (Sandbox Code Playgroud)

我可以做某事

df[,c("bar"):=list(cumsum(baz)),by=foo]
df$q <- df$bar*3.14
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法在data.table中执行此操作?

r data.table

9
推荐指数
2
解决办法
6085
查看次数

data.table :: fread的stringsAsFactors = TRUE参数不会将字符列转换为因子类型 - 解决方法是什么?

我知道这个问题已经在几个地方提出过,我一直试图找出一个可能很好的解决方案几个小时但是失败了.这就是我问这个的原因.

所以,我有一个巨大的数据文件(~5GB),我曾经fread()读过这个

library(data.table)
df<- fread('output.txt', sep = "|", stringsAsFactors = TRUE)
head(df, 5)
       age            income homeowner_status_desc marital_status_cd gender
1:         $35,000 - $49,999                                               
2: 35 - 44 $35,000 - $49,999                  Rent            Single      F
3:         $35,000 - $49,999                                               
4:                                                                         
5:         $50,000 - $74,999 
str(df)
Classes ‘data.table’ and 'data.frame':  999 obs. of  5 variables:
 $ age                  : chr  "" "35 - 44" "" "" ...
 $ income               : chr  "$35,000 - $49,999" "$35,000 - $49,999" "$35,000 - $49,999" "" ...
 $ …
Run Code Online (Sandbox Code Playgroud)

string r dataframe categorical-data data.table

9
推荐指数
1
解决办法
3756
查看次数

了解ddply错误消息

我试图弄清楚为什么我在使用ddply时收到错误消息.

示例数据:

data<-data.frame(area=rep(c("VA","OC","ES"),each=4),
    sex=rep(c("Male","Female"),each=2,times=3),
    year=rep(c(2009,2010),times=6),
    bin=c(110,120,125,125,110,130,125,80,90,90,80,140),
    shell_length=c(.4,4,1,2,.2,5,.4,4,.8,4,.3,4))

bin7<-ddply(data, .(area,year,sex,bin), summarize,n_bin=length(shell_length))
Run Code Online (Sandbox Code Playgroud)

错误消息:.fun(piece,...)出错:缺少参数"by",没有默认值

我昨天收到此错误消息.我重新启动R并重新编写代码,一切都很好.今天早上我再次收到错误消息并重新启动R并没有解决问题.

我还尝试运行一些示例代码并得到相同的错误消息.

  # Summarize a dataset by two variables
require(plyr)
dfx <- data.frame(
  group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
  sex = sample(c("M", "F"), size = 29, replace = TRUE),
  age = runif(n = 29, min = 18, max = 54)
)

# Note the use of the '.' function to allow
# group and sex to be used without quoting
ddply(dfx, .(group, sex), summarize,
 mean …
Run Code Online (Sandbox Code Playgroud)

r plyr

9
推荐指数
2
解决办法
9658
查看次数