我用sub替换R中的一个文本.
x<-"My name is ${name}"
sub("${name}","Tiger",x)
Run Code Online (Sandbox Code Playgroud)
错误信息:
Error in sub("${name}", "Tiger", x) :
invalid regular expression '${name}', reason 'Invalid contents of {}'
Run Code Online (Sandbox Code Playgroud)
输入文本有{},如何修复此错误?
我想在日期框架上使用聚合函数,但是对一列进行求和并取另一列的平均值.
这是一个示例数据框
Manager Category Amount SqFt
Joe Rent 150 500
Alice Rent 250 700
Joe Utilities 50 500
Alice Utilities 75 700
Run Code Online (Sandbox Code Playgroud)
我不能做下面这样的事情.有一个简单的方法吗?
Avg_CPSF=aggregate(cbind(Amount,SqFt)~Manager,data=aaa,FUN=c(sum,mean)
Run Code Online (Sandbox Code Playgroud)
最终我需要
Manager Amount SqFT
Joe 200 500
Alice 325 700
Run Code Online (Sandbox Code Playgroud)
这样我就可以通过金额/平方英尺来计算每平方英尺的成本
我有一个all看起来像这样的数据框:
现在我想创建一个散点图,其中x轴的列标题和相应的值作为数据点.例如:
7| x
6| x x
5| x x x x
4| x x x
3| x x
2| x x
1|
---------------------------------------
STM STM STM PIC PIC PIC
cold normal hot cold normal hot
Run Code Online (Sandbox Code Playgroud)
这应该很容易,但我无法弄清楚如何.
问候
我有一个.csv文件,格式如下:
Date , Time , Value
1899-01-01 , 4:00:00 , 1
1899-01-01 , 4:01:00 , 2
1899-01-01 , 4:02:00 , 3
1899-01-01 , 4:03:00 , 4
1899-01-01 , 4:04:00 , 5
1900-08-22 , 22:00:00 , 101
1900-08-22 , 22:01:00 , 102
2013-08-29 , 4:00:00 , 1000
2013-02-29 , 4:02:00 , 1001
2013-02-29 , 4:03:00 , 1002
Run Code Online (Sandbox Code Playgroud)
是否有可能group by date产生data.table的格式如下:
Date , Vector(variable length)
1899-02-28, c(1,2,3,4,5)
1900-08-22, c(101,102)
1900-08-22, c(1000,1001,1002)
Run Code Online (Sandbox Code Playgroud)
这是我迄今为止最好的(经过一天的尝试):
raw <- read.csv(pathName, header = TRUE, …Run Code Online (Sandbox Code Playgroud) 我是R的新手,我正在尝试使用aggregate数据框,每个主题和我的数据集中的每个指标执行一些时间序列整形.这很好用,但我发现结果不是一种非常容易使用的格式.我希望能够将结果转换回与原始数据帧相同的格式.
以虹膜数据集为例:
# Split into two data frames, one for metrics, the other for grouping
iris_species = subset(iris, select=Species)
iris_metrics = subset(iris, select=-Species)
# Compute diff for each metric with respect to its species
iris_diff = aggregate(iris_metrics, iris_species, diff)
Run Code Online (Sandbox Code Playgroud)
我只是diff用来说明我有一个塑造时间序列的函数,所以我得到一个可能不同长度的时间序列作为结果,绝对不是一个单一的聚合值(例如平均值).
我想转换结果,这似乎是一个矩阵,它具有列表值单元格到原始的"平面"数据帧.
我主要是好奇如何从结果管理这个aggregate,但我很确定用在千方百计解决方案plyr或reshape.
假设我有这个数据框:
matrix(c(2,4,3,1,5,7,1,2,3,5,8,2,4,5,1,1,3,6,1,3,4,5,6,1),nrow=6,ncol=4,byrow = TRUE)->X
as.data.frame(X)->X.df
V1 V2 V3 V4
1 2 4 3 1
2 5 7 1 2
3 3 5 8 2
4 4 5 1 1
5 3 6 1 3
6 4 5 6 1
Run Code Online (Sandbox Code Playgroud)
然后我想获得一组数据框的列表,其中包含2的所有列的组合,没有重复,并且避免任何列本身.这意味着,具有以下标题的数据框列表:
V1,V2
V1,V3
V1,V4
V2,V3
V2,V4
V3,V4
Run Code Online (Sandbox Code Playgroud)
知道如何做到这一点?
我试图找到一种方法来使用列表清除R中的工作区.
根据文档,我可以简单地创建一个包含所有工作空间对象的向量:WS=c(ls()).但是,当我尝试使用rm(c(ls())或删除元素时,没有任何反应rm(WS).
我知道我可以使用该命令rm(list=ls()).我只想弄清楚R是如何工作的.我在思考如何在rm()带有对象列表的向量上应用函数时犯了错误?
具体来说,我正在尝试创建一个类似于clcMATLAB中的函数的函数,但是我无法使它工作.这是我写的功能:
clc <- function() { rm(list = ls()) }
Run Code Online (Sandbox Code Playgroud) 当我需要在 R 中编写一些代码时,我通常会使用 R Studio。但是一旦我想用图例绘制绘图,我就会切换到 R Gui,因为 RStudio 的图例框是不同的,对我来说不愉快。
\n\n让我用一个例子来解释一下:
\n\nsigma <- (1:7000)/10000\n\nratioMSY <- 1 - 5.26 * sigma^2\nplot(sigma, ratioMSY, type="l", ylab="MSY(sigma^2)/MSY(0)", ylim=c(0,1), \n lty=2, cex.lab=1.5, bty="n", cex.axis=1.5, lwd=3)\n\npar(new=T)\nratioMSY <- 1 - 2.78 * sigma^2\nplot(sigma, ratioMSY, type="l", ylab="MSY(sigma^2)/MSY(0)", ylim=c(0,1), lty=1, \n cex.lab=1.5, bty="n", cex.axis=1.5, lwd=3)\n\npar(new=T)\nratioMSY <- 1 - 1.96 * sigma^2\nplot(sigma, ratioMSY, type="l", ylab="MSY(sigma^2)/MSY(0)", ylim=c(0,1), lty=3, \n cex.lab=1.5, bty="n", cex.axis=1.5, lwd=3)\n\nlegend(0,0.4,c("r = 0.1","r = 0.2","r = 0.3"), lty=c(2,1,3), cex=1.5)\nRun Code Online (Sandbox Code Playgroud)\n\n现在我用 RStudio 和 RGui 来做。
\n\n使用 RStudio: …
说我有
a <- c(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
并且我想通过将它在"左"方向上移动距离1来从a导出b
b
# [1] 2 3 1
Run Code Online (Sandbox Code Playgroud)
通过推导我的意思是你:
b <- c(2, 3, 1)例如,不是我正在寻找的解决方案什么是优雅/有效的方法呢?
考虑以下MWE:
df <- data.frame(Day=1:10, Value = c("Yes","No","Yes", "Yes", "Yes",
"No", "No", "Yes","Yes", "No"))
Day Value
1 Yes
2 No
3 Yes
4 Yes
5 Yes
6 No
7 No
8 Yes
9 Yes
10 No
Run Code Online (Sandbox Code Playgroud)
我想要一个额外的列来计算"值"已连续"是"的次数.因此,当Value为'No'时,新变量应始终为0.如果是'No'之后第一次出现'Yes',则将其设置为1.如果那么下一个观察结果也是肯定的,它应该是2一旦"是"链断断续续,下一个"是"的新变量将再次为1.所以我的数据框应如下所示:
Day Value Count
1 Yes 1
2 No 0
3 Yes 1
4 Yes 2
5 Yes 3
6 No 0
7 No 0
8 Yes 1
9 Yes 2
10 No 0
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮助我.