小编the*_*ail的帖子

我想从R中的两列中选择两个值中较大的一个

我的数据如下:

head(myframe)
      id fwt_r fwt_l
[1,] 101    72    52
[2,] 102    61    48
[3,] 103    46    49
[4,] 104    48    41
[5,] 105    51    42
[6,] 106    49    35
Run Code Online (Sandbox Code Playgroud)

我想在fwt_r和fwt_l中选择两个值中较大的一个.我希望输出像:

72
61
49
48
51
49
Run Code Online (Sandbox Code Playgroud)

请帮助我.谢谢!

r

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

在R中的数据集中将-inf,NaN和NA值替换为零

我试图在R中运行一些交易策略.我已经下载了一些股票价格和计算回报.新的返回数据集具有多个-inf,NaN和NA值.我正在复制一行数据集(log_ret).它是一个动物园数据集.

library(zoo)
log_ret <- structure(
  c(0.234,-0.012,-Inf,NaN,0.454,Inf), .Dim = c(1L, 6L), 
  .Dimnames = list(NULL, c("x", "y", "z", "s", "p", "t")),
  index = structure(12784, class = "Date"),
  class = "zoo"
)

               x      y    z   s     p   t
2005-01-01 0.234 -0.012 -Inf NaN 0.454 Inf
Run Code Online (Sandbox Code Playgroud)

如何用0替换这些不需要的值?

r time-series nan zoo

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

如何在R中实现countifs功能(excel)

我有一个包含100000行数据的数据集.我尝试countif在Excel中进行一些操作,但速度非常慢.所以我想知道这种操作是否可以在R中完成?基本上,我想根据多种条件进行计数.例如,我可以依靠职业和性别

row sex occupation
  1   M    Student
  2   F    Analyst
  2   M    Analyst
Run Code Online (Sandbox Code Playgroud)

r

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

R填充值取决于组合

我有一个组合的几个(可变)字母的列表,例如:

vec = c("a", "b", "c")
comb = unlist(lapply(1:length(vec), combn, x = vec, simplify = FALSE), recursive = FALSE) 
# this creates all the combinations of the vector I am interested in, i.e. for three letters:
# a b c ab ac bc abc
Run Code Online (Sandbox Code Playgroud)

对于每个组合,我试图根据位置填充元素到与向量数量相同的向量中.所以我想得到:

a =   200
b =   020
c =   002
ab =  220
ac =  202
bc =  022
abc = 222
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用循环替换数组i,j的每个元素但是因为所有值都是"2",所以必须有更有效的方法来执行此操作?非常感谢!!

arrays binary combinations loops r

8
推荐指数
3
解决办法
197
查看次数

data.table分别对数字和文本变量进行分组

我正在尝试简化这个data.table对数字和字符变量起作用的两阶段过程.例如 - 取第一个元素textvarsum每个数字变量.考虑这个小例子:

library(data.table)
dt <- data.table(grpvar=letters[c(1,1,2)], textvar=c("one","two","one"),
                 numvar=1:3, othernum=2:4)
dt
#   grpvar textvar numvar othernum
#1:      a     one      1        2
#2:      a     two      2        3
#3:      b     one      3        4
Run Code Online (Sandbox Code Playgroud)

现在我的第一个想法是嵌套.SD以将一个变量从lapply调用中删除,但我认为这有点复杂:

dt[, c(textvar=textvar[1], .SD[, lapply(.SD, sum), .SDcols=-c("textvar")]), by=grpvar]
#   grpvar textvar numvar othernum
#1:      a     one      3        5
#2:      b     one      3        4
Run Code Online (Sandbox Code Playgroud)

然后我想也许我可以单独分组并加入它们,但这似乎更糟糕:

dt[, .(textvar=textvar[1]), by=grpvar][ 
  dt[, lapply(.SD, sum), by=grpvar, .SDcols=-c("textvar")], on="grpvar" 
]
#   grpvar textvar numvar othernum …
Run Code Online (Sandbox Code Playgroud)

join r lapply data.table

8
推荐指数
1
解决办法
130
查看次数

svd(x,nu = 0)中的错误:0范围尺寸

我试图在5000列和30行的数据框架上进行PCA

Sample <- read.table(file.choose(), header=F,sep="\t")
Sample.scaled <- data.frame(apply(Sample,2,scale))
pca.Sample <- prcomp(Sample.scaled,retx=TRUE)`
Run Code Online (Sandbox Code Playgroud)

得到了错误

Error in svd(x, nu = 0) : infinite or missing values in 'x'

sum(is.na(Sample))
[1] 0

sum(is.na(Sample.scaled))
[1] 90
Run Code Online (Sandbox Code Playgroud)

尝试使用以下内容忽略所有na值

pca.Sample <- prcomp(na.omit(Sample.scaled),retx=TRUE)
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误

Error in svd(x, nu = 0) : 0 extent dimensions
Run Code Online (Sandbox Code Playgroud)

有报告说,na.action需要给出公式,因此尝试如下

pca.Sample <- prcomp(~.,center=TRUE,scale=TRUE,Sample, na.action=na.omit)
Run Code Online (Sandbox Code Playgroud)

现在收到以下错误

Error in prcomp.default(x, ...) :
  cannot rescale a constant/zero column to unit variance
Run Code Online (Sandbox Code Playgroud)

认为问题可能是因为"我的一个数据列是常量.常量的方差是0,然后缩放将除以0,这是不可能的."

但不确定如何解决这个问题.任何帮助非常感谢....

r

7
推荐指数
1
解决办法
2万
查看次数

将计数矩阵转换为二进制存在矩阵

我有一个数据框存储拥有不同种类的不同种类的水果.如下

    apple  banana  orange
Tim     3       0       2
Tom     0       1       1
Bob     1       2       2
Run Code Online (Sandbox Code Playgroud)

同样,数字是水果的数量.如何将其更改为存在矩阵,这意味着如果一个人有一个水果,无论他有多少,那么我记录1,如果没有,记录0.如下

    apple  banana  orange
Tim     1       0       1
Tom     0       1       1
Bob     1       1       1
Run Code Online (Sandbox Code Playgroud)

binary r matrix

7
推荐指数
2
解决办法
7985
查看次数

有效地存储大而低秩的矩阵

我知道R中有包可以有效地存储稀疏矩阵.还有一种方法可以有效地存储低秩矩阵吗?例如:

A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
Run Code Online (Sandbox Code Playgroud)

现在,B太大而不能存储在内存中,但它的级别很低.有没有什么办法来构建和存储B以高效的方式,这样一些基本的读取方法(rowSums,colSums等)都是在飞行中进行,以便为CPU或内存交易?

r matrix rank cran

7
推荐指数
1
解决办法
563
查看次数

导出R对象进行3D打印

如果我在R中有一个数据集,那么导出它的好方法是什么我可以将它用于像Shapeways这样的3D打印服务?

我没有任何"真正的"CAD软件,但我之前使用过Google Sketchup.

在我的例子中,对象可以用两个表面图来描述,如下所示:

x <- y <- seq(0,1,by=0.01)
persp(x, y, outer(x, y, function(x,y) (x+y)^2))
persp(x, y, outer(x, y, function(x,y) rep(0,length(x))), zlim=c(-1,1))
Run Code Online (Sandbox Code Playgroud)

...我希望一起出现作为一个要打印的对象.有任何想法吗?

3d export r

7
推荐指数
2
解决办法
730
查看次数

将日期时间格式化为R中的季节?

在R中,可以将POSIXlt日期时间对象格式化为一个月:

format(Sys.time(), format='%Y-%m')
Run Code Online (Sandbox Code Playgroud)

有没有办法在季节或3个月组(DJF,MAM,JJA,SON)做同样的事情?这些分歧在气候学和生态科学中非常普遍,如果用几个月的话,用一种简洁的方法来快速形成它们就会很棒.显然DJF超过2年,但出于目的或这个问题,这并不重要 - 只是一直把它们推到任一年,(或者,理想情况下,能够指定他们进入哪一年会很好) .

我使用输出作为索引by(),因此输出格式无关紧要,只要每年/每季都是唯一的.

编辑:示例数据:

dates <- Sys.Date()+seq(1,380, by=35)
dates <- structure(c(16277, 16312, 16347, 16382, 16417, 16452, 16487, 
                     16522, 16557, 16592, 16627), class = "Date")
dates
#[1] "2014-07-26" "2014-08-30" "2014-10-04" "2014-11-08" "2014-12-13"
# "2015-01-17" "2015-02-21" "2015-03-28" "2015-05-02" "2015-06-06" "2015-07-11"
Run Code Online (Sandbox Code Playgroud)

应该导致:

c("2014-JJA", "2014-JJA", "2014-SON", "2014-SON", "2015-DJF", "2015-DJF", 
  "2015-DJF", "2015-MAM", "2015-MAM", "2015-JJA", "2015-JJA")
Run Code Online (Sandbox Code Playgroud)

但"2015-DJF"也可能是"2014-DJF".此外,输出的形式无关紧要 - "2104q4或201404也没关系.

datetime r datetime-format

7
推荐指数
1
解决办法
2185
查看次数

标签 统计

r ×10

binary ×2

matrix ×2

3d ×1

arrays ×1

combinations ×1

cran ×1

data.table ×1

datetime ×1

datetime-format ×1

export ×1

join ×1

lapply ×1

loops ×1

nan ×1

rank ×1

time-series ×1

zoo ×1