我希望在R中将英制单位转换为公制单位,反之亦然.我该怎样做呢?
如果没有当前的方法,我怎么能创建一个包呢?
我想得到每行某些列的平均值.
我有这些数据:
w=c(5,6,7,8)
x=c(1,2,3,4)
y=c(1,2,3)
length(y)=4
z=data.frame(w,x,y)
Run Code Online (Sandbox Code Playgroud)
哪个回报:
w x y
1 5 1 1
2 6 2 2
3 7 3 3
4 8 4 NA
Run Code Online (Sandbox Code Playgroud)
我想得到某些列的意思,而不是所有列.我的问题是我的数据中有很多NA.所以如果我想要x和y的平均值,这就是我想要回来的:
w x y mean
1 5 1 1 1
2 6 2 2 2
3 7 3 3 3
4 8 4 NA 4
Run Code Online (Sandbox Code Playgroud)
我想我可以做类似的事情,z$mean=(z$x+z$y)/2但y的最后一行是NA,所以很明显我不想计算NA,我不应该除以2.我试过cumsum但当该行中有一个NA时返回NAs.我想我正在寻找能够添加所选列的内容,忽略NAs,获取没有NA的所选列的数量并除以该数字.我试过??意思和平均而且完全难倒.
ETA:还有一种方法可以为特定列添加权重吗?
我正在考虑各种方法来停电我的网站以进行停电抗议.哪种技术效果最好?
方法1(最简单):将现有样式表替换为包含此代码的新样式表:
* { display: none; }
Run Code Online (Sandbox Code Playgroud)
这样做的好处是搜索引擎仍然可以抓取网站,熟悉抗议并且可能了解其分支的人仍然可以通过查看来源来查看内容.缺点是人们可能认为出现了问题,因为根本没有内容显示(我很好).
方法2:添加一个background-color: #000;to body和color: #000to所有文本元素,除了可能描述网站外观不同的任何文本元素.这样做的好处是,更多人会了解正在发生的事情.缺点是它并没有真正描绘出抗议的信息.此外,我认为给文本提供与背景相同的颜色可能是不好的做法,因为它是一种经过验证的垃圾邮件技术.
方法3:显示测试模式.
我在手机上安装了"终端IDE".但是,我想将某些URL复制到vim文件中.这就是我目前正在做的事情:
我试图在bash粘贴,使用VIM粘贴P,并且"*p,我甚至试图寻找剪贴板的存储位置.我没有根电话,所以最后一部分很难.
有没有办法从Android剪贴板到终端IDE或任何终端模拟器?
我有2.3.4版本
我看过这个似乎相似的问题,但是我很难让它与我的数据一起工作.
假设我的边缘列表包含以下内容:
P1 P2 weight
a b 1
a c 3
a d 2
b c 8
Run Code Online (Sandbox Code Playgroud)
我read.csv用来收集数据,然后将其转换为矩阵.然后我使用以下内容绘制它:
g=graph.edgelist(x[,1:2],directed=F)
E(g)$weight=as.numeric(x[,3])
tkplot(g,layout=layout.fruchterman.reingold,edge.width=E(g)$weight)
Run Code Online (Sandbox Code Playgroud)
这将返回一个包含顶点和边的网络.我想用一个图像替换顶点a,用另一个图像替换顶点b,依此类推.我知道如何将相同的图像应用于所有,但我想将不同的图像应用于每个顶点.我该怎么做呢?
编辑:根据user20650的要求,在下面添加可重现的代码
# loading libraries
library(igraph)
library(rgdal)
# reading data from edgelist
x <- read.csv('edgelist', colClasses = c("character","character","numeric"), header=T)
# however, to replicate the data, use this line instead (Above line included just to show how I get the data)
x <- data.frame(P1 = c("a","a","a","b"), P2 = c("b","c","d","c"), weight = …Run Code Online (Sandbox Code Playgroud) 我找到了实现这一目标的方法,但它需要大量的猜测,并且所有的Venn或Euler图表包似乎只允许您将总出现次数放在圆圈内.
数据:
name=c('itm1','itm2','itm3','itm4','itm5','itm6','itm7','itm8','itm9','itm0')
x=c(5,2,3,5,6,7,7,8,9,2)
y=c(6,9,9,7,6,5,2,3,2,4)
z=data.frame(name,x,y)
Run Code Online (Sandbox Code Playgroud)
plot(z$x,z$y,type='n')
text(z$x,z$y,z$name)
Run Code Online (Sandbox Code Playgroud)
par(new=T)
symbols(3,7,circles=2.5,add=T,bg='#34692499',inches=F)
symbols(6,6,circles=1.5,add=T,bg='#64392499',inches=F)
symbols(8,3,circles=2,add=T,bg='#24399499',inches=F)
Run Code Online (Sandbox Code Playgroud)
因此,这是一个非常繁琐的过程,为每个项目提供x和y坐标,然后猜测放置圆圈的位置以及给出它们的半径.
理想情况下,我想使用我最初的数据集,如下所示:
cat1=c('itm2','itm3','itm0')
cat2=c('itm1','itm4','itm5','itm6')
cat3=c('itm6','itm7','itm8','itm9')
Run Code Online (Sandbox Code Playgroud)
然后将点分配到正确的圆圈中.有没有更好的方法呢?
我有一个包含以下数据的数据框:
date=strptime(c(20110101,20110102,20110103,20110104,20110105,20110106),'%Y%m%d')
rate1=c(1,2,3,4,5,6)
rate2=c(2,1,3,6,8,4)
rate3=c(4,1,3,6,8,3)
rate4=c(7,8,9,2,1,8)
z=data.frame(date,rate1,rate2,rate3,rate4)
z$max=pmax(rate1,rate2,rate3,rate4)
Run Code Online (Sandbox Code Playgroud)
pmax函数允许我获取该记录的最大值,但我想知道如何获得该记录的最大值索引.
如果z $ max相等7,8,9,6,8,8,我想得到5,5,5,3,3,5
这可能吗?我知道这似乎很简单,但我无法在任何地方找到答案.
我有以下数据:
x=strptime(20010101:20010110)
y=1:10
z=data.frame(x,y)
Run Code Online (Sandbox Code Playgroud)
所以我的数据是这样的:
x y
1 2001-01-01 1
2 2001-01-02 2
3 2001-01-03 3
4 2001-01-04 4
5 2001-01-05 5
6 2001-01-06 6
7 2001-01-07 7
8 2001-01-08 8
9 2001-01-09 9
10 2001-01-10 10
Run Code Online (Sandbox Code Playgroud)
当我使用以下基础创建基础图:
plot(x,y)
grid(NULL,NULL)
Run Code Online (Sandbox Code Playgroud)
我的垂直网格与日期刻度标记不对齐.我知道这似乎是一个非常简单的问题,但我还没有找到解决方案.有没有办法让垂直网格与使用不需要我这样做的基数的日期刻度线对齐:
abline(v=as.numeric(strptime(c(20010102,20010104,20010106,20010108,20010110),'%Y%m%d')))
Run Code Online (Sandbox Code Playgroud)
我有很多不同日期的情节,我真的希望尽可能自动化,希望使用基数.
我有以下数据:
a=c(1:10)
b=c(16:25)
c=c(24:33)
wa=c(3,7,3,3,3,3,3,3,3,1)
wb=c(3,2,3,3,3,3,3,3,3,8)
wc=c(4,1,4,4,4,4,4,4,4,1)
z=data.frame(a,b,c,wa,wb,wc)
Run Code Online (Sandbox Code Playgroud)
我想获得每条记录的加权平均值.所以我尝试了这个:
weight=apply(subset(z,select=c(wa,wb,wc)),1,function(x) x)
z$weightMean=apply(subset(z,select=c(a,b,c)),1,function(x) weighted.mean(x,weight))
Run Code Online (Sandbox Code Playgroud)
其中返回以下错误消息:
Error in weighted.mean.default(x, weight) :
'x' and 'w' must have the same length
Run Code Online (Sandbox Code Playgroud)
那么我试过这个:
weight=as.vector(weight)
z$weightMean=apply(subset(z,select=c(a,b,c)),1,function(x) weighted.mean(x,weight))
Run Code Online (Sandbox Code Playgroud)
其中也返回了同样的错误.
我究竟做错了什么?
我想知道特定函数的公式是什么。通常,当我键入不带括号的函数时,它会返回一个公式,因此如果我键入,sd我将得到:
function (x, na.rm = FALSE)
{
if (is.matrix(x))
apply(x, 2, sd, na.rm = na.rm)
else if (is.vector(x))
sqrt(var(x, na.rm = na.rm))
else if (is.data.frame(x))
sapply(x, sd, na.rm = na.rm)
else sqrt(var(as.vector(x), na.rm = na.rm))
}
<environment: namespace:stats>
Run Code Online (Sandbox Code Playgroud)
这很好。但是如果我在rollmean加载了动物园包的情况下输入它会返回:
function (x, k, fill = if (na.pad) NA, na.pad = FALSE, align = c("center",
"left", "right"), ...)
{
UseMethod("rollmean")
}
<environment: namespace:zoo>
Run Code Online (Sandbox Code Playgroud)
我猜测该方法中发生了一些事情rollmean,但是我如何才能看到其中发生了什么?这可能是一个新手问题,但我很难找出如何查看特定函数的基本公式。
我有一个包含大约25000条记录和10列的数据框.我正在使用代码来确定相同列(NewVal)中基于另一列(y)的前一个值的更改,其中已经有一个百分比更改.
x=c(1:25000)
y=rpois(25000,2)
z=data.frame(x,y)
z[1,'NewVal']=z[1,'x']
Run Code Online (Sandbox Code Playgroud)
所以我跑了这个:
for(i in 2:nrow(z)){z$NewVal[i]=z$NewVal[i-1]+(z$NewVal[i-1]*(z$y[i]/100))}
Run Code Online (Sandbox Code Playgroud)
这比我预期的要长得多.当然,我可能是一个不耐烦的人 - 正如我曾经说过的一封严厉的信件 - 但我试图逃避Excel的世界(在我阅读http://www.burns-stat.com/pages/Tutor/spreadsheet_addiction之后). html,由于我开始不信任数据,这导致了更多问题 - 这封信也提到了我的信任问题).
我想做到这一点不使用任何功能,从包,因为我想知道是什么创造价值的公式是 - 或者,如果你愿意,我根据这个友好的公文是一个苛刻的控制狂.
我也想知道如何像caTools中的rollmean一样获得移动平均线.要么是这样,要么我怎么弄清楚他们的公式是什么?我尝试进入rollmean,我认为它指的是另一个功能(我是R的新手).这应该是另一个问题 - 但正如那封信所说,我一生中都没有做出正确的决定.
我试图绘制一个比率,但我的问题是,当股息大于除数时,我的商数可以尽可能高.当除数大于被除数时,商在0和1之间.这很好,但是当我绘制结果时,具有较大股息的比率占据了图的大部分,较小的股息比率被限制为面积小得多.有没有办法在一个图上显示比率(希望使用基础图),其中股息是除数的五倍将占用与除数比股息大五倍时相同的空间量.
以下是一些示例数据:
x=1:10
y=10:1
ratioxy=x/y
Run Code Online (Sandbox Code Playgroud)
数据是:
x
[1] 1 2 3 4 5 6 7 8 9 10
y
[1] 10 9 8 7 6 5 4 3 2 1
ratioxy
[1] 0.1000000 0.2222222 0.3750000 0.5714286 0.8333333 1.2000000 1.7500000 2.6666667
[9] 4.5000000 10.0000000
Run Code Online (Sandbox Code Playgroud)
当我这样做:
plot(ratioxy,type='l',col='blue')
abline(h=1)
Run Code Online (Sandbox Code Playgroud)
我明白了:

我所能想到的只是以某种方式玩弄ratioxy小于1 的商,但现在没有什么东西可以来找我.
我设法将一些数据汇总为以下内容:
Month Year Number
1 1 2011 3885
2 2 2011 3713
3 3 2011 6189
4 4 2011 3812
5 5 2011 916
6 6 2011 3813
7 7 2011 1324
8 8 2011 1905
9 9 2011 5078
10 10 2011 1587
11 11 2011 3739
12 12 2011 3560
13 1 2012 1790
14 2 2012 1489
15 3 2012 1907
16 4 2012 1615
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个条形图,其中月份的条形彼此相邻,因此对于上面的示例,一月到四月将有两个条形(一个用于 2011 年,一个用于 2012 年),其余月份将只有一个条形代表2011 年。
我知道我必须使用beside=T,但我想我需要创建某种矩阵才能使条形图正确显示。我在弄清楚那一步是什么时遇到了问题。我有一种感觉,它可能涉及matrix但出于某种原因,我完全被一个看起来非常简单的解决方案难住了。
另外,我有这个数据: …