小编rmb*_*man的帖子

减去忽略NA的多个列

我对R很新,并且遇到了NA的问题.这个问题可能已在其他地方得到解答,但我似乎无法找到答案.我试图做一些相反的rowSums()事情,因为我试图减去x2x3从中x1产生x4没有NA的产生.我目前使用的代码如下:

> x <- data.frame(x1 = 3, x2 = c(4:1, 2:5), x3=c(1,NA))
> x$x4=x$x1-x$x2-x$x3
> x

  x1 x2 x3 x4
1  3  4  1 -2
2  3  3 NA NA
3  3  2  1  0
4  3  1 NA NA
5  3  2  1  0
6  3  3 NA NA
7  3  4  1 -2
8  3  5 NA NA
Run Code Online (Sandbox Code Playgroud)

换句话说,我想让NA的内容类似于如何rowSums允许na.rm=TRUE参数,以便得到这个结果:

  x1 x2 x3 x4
1 …
Run Code Online (Sandbox Code Playgroud)

r

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

在双轴图上绘制不同级别的零线

我试图以绘图方式覆盖折线图和条形图(用一条垂直线指定重要日期),但我遇到了这个问题,其中两条零线偏移而不是在同一条线上。我尝试过摆弄overlaying = 'y'其中的选项layout,并尝试更改三个组件的顺序trace,但似乎没有任何帮助。有什么想法如何修复吗?下面是我的带有虚拟数据的代码:

(此外,如果您能解决我的图例重叠 y2axis 问题,还可获得奖励积分)

date <- seq(as.Date("2015/6/1"), by = "month", length.out = 19) 
wires_mnth <- c(rep(0,8),100000,750000,1200000,2500000,3100000,5500000,7500000,8000000,9900000,11300000,11000000)
wires_cnt <- c(rep(0,8),100,200,250,325,475,600,750,800,1000,1150,1200)
data <- data.frame(date, wires_mnth)

plot_ly(data) %>%
add_trace(x = ~date, y = ~wires_cnt, type = 'bar', name = 'Wires Count', 
    yaxis = 'y2', opacity = .5) %>%
add_trace(x = ~date, y = ~wires_mnth, type = 'scatter', mode = 'lines', name 
    = 'Monthly Wires') %>%
add_trace(x = c(2016,2016), y = c(0, 12000000), type = 'scatter', …
Run Code Online (Sandbox Code Playgroud)

r data-visualization graph plotly

5
推荐指数
1
解决办法
2330
查看次数

项目欧拉#22,关闭158,055

我目前正在解决Project Euler问题22,该问题有以下挑战:

使用names.txt(右键单击和"保存链接/目标为..."),一个包含超过五千个名字的46K文本文件,首先按字母顺序排序.然后计算每个名称的字母值,将该值乘以列表中的字母位置以获得名称分数.

例如,当列表按字母顺序排序时,值为3 + 15 + 12 + 9 + 14 = 53的COLIN是列表中的第938个名称.因此,COLIN将获得938×53 = 49714的分数.

文件中所有名称分数的总和是多少?

可以使用上面的链接下载该文件.我写了下面的代码来解决这个问题:

rm(list=ls())
library(splitstackshape)

#read in data from http://projecteuler.net/problem=22
names=sort(t(read.table("names.txt",sep=",")))

#letters to numbers conversion vectors
from=LETTERS[seq(1,26)]
to=as.character(seq(1,26))

#function to replace all letters with corresponding numbers
gsub2 = function(pattern, replacement, x, ...){
  for(i in 1:length(pattern))
    x = gsub(pattern[i],paste(replacement[i]," ",sep=""), x, ...)
  x
}

#create df, run function, create row number var for later calculation
df=data.frame(names=names)
df$name.num = gsub2(from,to,df$names)
df$rownum=seq(1,nrow(df))

#split letter …
Run Code Online (Sandbox Code Playgroud)

r splitstackshape

4
推荐指数
1
解决办法
360
查看次数

标签 统计

r ×3

data-visualization ×1

graph ×1

plotly ×1

splitstackshape ×1