小编A5C*_*2T1的帖子

检测向量是否至少有1个NA的最快方法?

检测向量NA在R中是否至少有1的最快方法是什么?我一直在用:

sum( is.na( data ) ) > 0
Run Code Online (Sandbox Code Playgroud)

但这需要检查每个元素,强制和和函数.

r na

68
推荐指数
5
解决办法
7万
查看次数

R Apply()函数用于特定的数据帧列

我想在数据帧上使用apply函数,但只将函数应用于最后5列.

B<- by(wifi,(wifi$Room),FUN=function(y){apply(y, 2, A)})
Run Code Online (Sandbox Code Playgroud)

这将A应用于y的所有列

B<- by(wifi,(wifi$Room),FUN=function(y){apply(y[4:9], 2, A)})
Run Code Online (Sandbox Code Playgroud)

这仅适用于Y的第4-9列,但是B的总返回距离前3列......我仍然想要那些,我只是不希望A应用于它们.

wifi[,1:3]+B 
Run Code Online (Sandbox Code Playgroud)

也没有做我期望/想要的.

r apply dataframe

66
推荐指数
3
解决办法
16万
查看次数

data.frame Group By列

我有一个数据帧DF.

说DF是:

  A B
1 1 2
2 1 3
3 2 3
4 3 5
5 3 6 
Run Code Online (Sandbox Code Playgroud)

现在我想通过列A将行组合在一起并得到列B的总和.

例如:

  A B
1 1 5
2 2 3
3 3 11
Run Code Online (Sandbox Code Playgroud)

我目前正在使用sqldf函数的SQL查询.但由于某种原因,它非常缓慢.有没有更方便的方法呢?我也可以使用for循环手动完成,但它又慢了.我的SQL查询是"从A组中选择A,计数(B)".

通常,每当我不使用矢量化操作并使用for循环时,即使对于单个过程,性能也非常慢.

aggregate r

60
推荐指数
3
解决办法
16万
查看次数

将所有数据框字符列转换为因子

给定(预先存在的)具有各种类型列的数据框,将所有字符列转换为因子的最简单方法是什么,而不影响其他类型的任何列?

这是一个例子data.frame:

df <- data.frame(A = factor(LETTERS[1:5]),
                 B = 1:5, C = as.logical(c(1, 1, 0, 0, 1)),
                 D = letters[1:5],
                 E = paste(LETTERS[1:5], letters[1:5]),
                 stringsAsFactors = FALSE)
df
#   A B     C D   E
# 1 A 1  TRUE a A a
# 2 B 2  TRUE b B b
# 3 C 3 FALSE c C c
# 4 D 4 FALSE d D d
# 5 E 5  TRUE e E e
str(df)
# 'data.frame':  5 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

55
推荐指数
5
解决办法
8万
查看次数

如何将变量键/值对添加到列表对象?

我有两个变量,key并且value,我想将它们作为键/值对添加到列表中:

key = "width"
value = 32

mylist = list()
mylist$key = value
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

mylist
# $key
# [1] 32
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

mylist
# $width
# [1] 32
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

r list

51
推荐指数
3
解决办法
6万
查看次数

根据组计算R中数据框中的行数

我有一个这样的数据框R:

  ID   MONTH-YEAR   VALUE
  110   JAN. 2012     1000
  111   JAN. 2012     2000
         .         .
         .         .
  121   FEB. 2012     3000
  131   FEB. 2012     4000
         .           .
         .           .
Run Code Online (Sandbox Code Playgroud)

因此,每年的每个月都有n行,它们可以按任何顺序排列(意味着它们都不是连续的并且处于休息状态).我想计算每个行的行数,MONTH-YEAR即JAN有多少行.2012年,FEB有多少人.2012年等等.像这样的东西:

 MONTH-YEAR   NUMBER OF ROWS
 JAN. 2012     10
 FEB. 2012     13
 MAR. 2012     6
 APR. 2012     9
Run Code Online (Sandbox Code Playgroud)

我试着这样做:

n_row <- nrow(dat1_frame %.% group_by(MONTH-YEAR))
Run Code Online (Sandbox Code Playgroud)

但它不会产生所需的输出.我怎么能这样做?

r rowcount dataframe

36
推荐指数
6
解决办法
21万
查看次数

运行库时出错(ggplot2)

我刚刚更新到R 2.11.1,安装ggp​​lot2之后,我试过了

library(ggplot2)
Run Code Online (Sandbox Code Playgroud)

得到了

Loading required package: proto
Loading required package: grid Loading
required package: reshape Loading
required package: plyr Loading
required package: digest Error in
eval(expr, envir, enclos) : could not
find function "proto" In addition:
Warning message: In library(package,
lib.loc = lib.loc, character.only =
TRUE, logical.return = TRUE,  :  
there is no package called 'proto'
Error : unable to load R code in
package 'ggplot2' Error:
package/namespace load failed for
'ggplot2'
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

r ggplot2

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

计算每个ID(组)内的累积总和

使用数据框:

df <- data.frame(id = rep(1:3, each = 5)
                 , hour = rep(1:5, 3)
                 , value = sample(1:15))
Run Code Online (Sandbox Code Playgroud)

我想添加一个匹配的累积和列id:

df
   id hour value csum
1   1    1     7    7
2   1    2     9   16
3   1    3    15   31
4   1    4    11   42
5   1    5    14   56
6   2    1    10   10
7   2    2     2   12
8   2    3     5   17
9   2    4     6   23
10  2    5     4   27
11  3    1     1 …
Run Code Online (Sandbox Code Playgroud)

r cumsum

30
推荐指数
4
解决办法
2万
查看次数

使用grep帮助R中的数据框子集

我无法对数据进行子集化.我希望在x列上对数据进行子集化,其中前3个字符开始为G45.

我的数据框:

 x <- c("G448", "G459", "G479", "G406")  
 y <- c(1:4)
 My.Data <- data.frame (x,y)
Run Code Online (Sandbox Code Playgroud)

我试过了:

 subset (My.Data, x=="G45*")
Run Code Online (Sandbox Code Playgroud)

但我不确定如何使用通配符.我也尝试过grep()来查找指标:

 grep  ("G45*", My.Data$x)
Run Code Online (Sandbox Code Playgroud)

但它返回所有4行,而不仅仅是那些以G45开头的行,可能还因为我不确定如何使用通配符.

grep r subset dataframe

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

R如何计算数据帧中行之间的差异

这是我的问题的一个简单示例:

> df <- data.frame(ID=1:10,Score=4*10:1)
> df
       ID Score
    1   1    40
    2   2    36
    3   3    32
    4   4    28
    5   5    24
    6   6    20
    7   7    16
    8   8    12
    9   9     8
    10 10     4
    > diff(df)

Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] : 
  non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么会出现这个错误?

diff r dataframe

27
推荐指数
6
解决办法
7万
查看次数

标签 统计

r ×10

dataframe ×5

aggregate ×1

apply ×1

cumsum ×1

diff ×1

ggplot2 ×1

grep ×1

list ×1

na ×1

rowcount ×1

subset ×1