我的数据如下:
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中运行一些交易策略.我已经下载了一些股票价格和计算回报.新的返回数据集具有多个-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替换这些不需要的值?
我有一个包含100000行数据的数据集.我尝试countif在Excel中进行一些操作,但速度非常慢.所以我想知道这种操作是否可以在R中完成?基本上,我想根据多种条件进行计数.例如,我可以依靠职业和性别
row sex occupation
1 M Student
2 F Analyst
2 M Analyst
Run Code Online (Sandbox Code Playgroud) 我有一个组合的几个(可变)字母的列表,例如:
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",所以必须有更有效的方法来执行此操作?非常感谢!!
我正在尝试简化这个data.table对数字和字符变量起作用的两阶段过程.例如 - 取第一个元素textvar和sum每个数字变量.考虑这个小例子:
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) 我试图在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,这是不可能的."
但不确定如何解决这个问题.任何帮助非常感谢....
我有一个数据框存储拥有不同种类的不同种类的水果.如下
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) 我知道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中有一个数据集,那么导出它的好方法是什么我可以将它用于像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)
...我希望一起出现作为一个要打印的对象.有任何想法吗?
在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也没关系.