检测向量NA在R中是否至少有1的最快方法是什么?我一直在用:
sum( is.na( data ) ) > 0
Run Code Online (Sandbox Code Playgroud)
但这需要检查每个元素,强制和和函数.
我想在数据帧上使用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)
也没有做我期望/想要的.
我有一个数据帧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循环时,即使对于单个过程,性能也非常慢.
给定(预先存在的)具有各种类型列的数据框,将所有字符列转换为因子的最简单方法是什么,而不影响其他类型的任何列?
这是一个例子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) 我有两个变量,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:
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 2.11.1,安装ggplot2之后,我试过了
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)
任何帮助赞赏.
使用数据框:
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) 我无法对数据进行子集化.我希望在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开头的行,可能还因为我不确定如何使用通配符.
这是我的问题的一个简单示例:
> 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)
谁能告诉我为什么会出现这个错误?