小编h3r*_*m4n的帖子

使用data.table进行左连接

假设我有两个data.table:

A:

  A  B
1: 1 12
2: 2 13
3: 3 14
4: 4 15
Run Code Online (Sandbox Code Playgroud)

B:

   A  B
1: 2 13
2: 3 14
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

merge_test = merge(dataA, dataB, by="A", all.data=TRUE)
Run Code Online (Sandbox Code Playgroud)

我明白了:

   A B.x B.y
1: 2  13  13
2: 3  14  14
Run Code Online (Sandbox Code Playgroud)

但是,我想在最终合并表中的dataA中的所有行.有没有办法做到这一点?

merge r data.table

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

将矢量列表转换为数据帧

我正在尝试将矢量列表(本质上是一个多维数组)转换为数据帧,但每次尝试我都会得到意想不到的结果.

我的目标是实例化一个空白列表,在for循环中填充它,其中包含有关循环迭代的信息的向量,然后在完成后将其转换为数据帧.

> vectorList <- list()
> for(i in  1:5){
+     vectorList[[i]] <- c("number" = i, "square root" = sqrt(i))
+ }
> vectorList
Run Code Online (Sandbox Code Playgroud)

输出:

> [[1]]
>      number square root 
>           1           1 
> 
> [[2]]
>      number square root 
>    2.000000    1.414214 
> 
> [[3]]
>      number square root 
>    3.000000    1.732051 
> 
> [[4]]
>      number square root 
>           4           2 
> 
> [[5]]
>      number square root 
>    5.000000    2.236068
Run Code Online (Sandbox Code Playgroud)

现在我希望这成为一个包含2个变量的5个观测值的数据框,但是试图从'vectorList'创建一个数据框

numbers <- data.frame(vectorList)
Run Code Online (Sandbox Code Playgroud)

结果是5个变量的2个观察结果.

奇怪的是它甚至不会被重塑(我知道这将是一个糟糕的工作,但我尝试过). …

r list vector dataframe

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

Data.Table按组滚动连接

如何在test.day之前找到每个(,)对的最后一个值?loc.xloc.y

dt <- data.table( 
  loc.x = as.integer(c(1, 1, 3, 1, 3, 1)),
  loc.y = as.integer(c(1, 2, 1, 2, 1, 2)),
  time = as.IDate(c("2015-03-11", "2015-05-10", "2015-09-27",
                    "2015-11-25", "2014-09-13", "2015-08-19")), 
  value = letters[1:6]
)

setkey(dt, loc.x, loc.y, time)
test.day <- as.IDate("2015-10-01")
Run Code Online (Sandbox Code Playgroud)

所需输出:

   loc.x loc.y value
1:     1     1     a
2:     1     2     f
3:     3     1     c
Run Code Online (Sandbox Code Playgroud)

join r data.table

7
推荐指数
3
解决办法
776
查看次数

在grid.draw中使用extrafont中的字体

假设我有这样的数据集:

dat <- data.frame
  text = c(
    "It made me feel very positive to brand X", 
    "It was clear and easy to understand",
    "I didn't like it al all"),
  value=runif(3)
)
Run Code Online (Sandbox Code Playgroud)

我可以使用包装中的TradeGothic LT CondEighteen字体在ggplot中绘制它extrafonts:

library(ggplot2)
p <- ggplot(dat, aes(text, value)) + 
     geom_bar(stat="identity") +
     coord_flip() +
     labs(title="     Do you agree with the following statements?")+
     theme_bw(16)+
     theme(text=element_text(family="TradeGothic LT CondEighteen"))

ggsave('plot.pdf', plot = plot,  path = "/Users/jacobdeecurtis/Desktop")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当我ggplot_gtable在剧情中使用时:

gt <- ggplot_gtable(ggplot_build(plot))
gt$layout[which(gt$layout$name == "title"), c("l", "r")] <- …
Run Code Online (Sandbox Code Playgroud)

fonts r ggplot2 gtable

6
推荐指数
1
解决办法
714
查看次数

在绘图周围裁剪出ggplot2空格

有什么方法可以在使用coord_fixed()?更改形状时删除ggplot2图周围的空白区域?我希望将上方和下方的空白区域裁剪掉,以便仅保留绘图区域和轴标签.我在没有保存的情况下在R markdown文件中渲染绘图输出.

 p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
 p + coord_fixed(ratio = 1)
Run Code Online (Sandbox Code Playgroud)

下面的代码生成以下图表:

情节与白色空间

whitespace r margin crop ggplot2

6
推荐指数
2
解决办法
1326
查看次数

如何在其他文本内以闪亮的方式显示输入文本?

我有一个输入框,每当用户键入他的名字时,输出应类似于“ hai mr.X,你好吗?” 其中X是输入。仅应在首次输入后出现,并且名称应从X更改为之后的基于输入的任何值。

ui.Rserver.R代码如下:

用户界面

library(shiny)
shinyUI(fluidPage(
titlePanel("Employee Assesment"),
sidebarLayout(
sidebarPanel(
  textInput("name","Enter your name","")),
  mainPanel(("About this"),
  textOutput("name")
  )
  )
))
Run Code Online (Sandbox Code Playgroud)

服务器

library(shiny)

shinyServer(function(input, output) {

output$name <- renderText({input$name})

})
Run Code Online (Sandbox Code Playgroud)

r shiny shiny-server

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

如何绘制日期和时间的特定范围的x值?错误"无效的xlim值"

如果我想放大整个x域(时间轴)内的特定时间范围,我在绘制时间序列数据时遇到问题.有关上下文,请参阅以下代码:

date_time <- as.factor(c('8/24/07 17:30','8/24/07 18:00','8/24/07 18:30',
                     '8/24/07 19:00','8/24/07 19:30','8/24/07 20:00',
                     '8/24/07 20:30','8/24/07 21:00','8/24/07 21:30',
                     '8/24/07 22:00','8/24/07 22:30','8/24/07 23:00',
                     '8/24/07 23:30','8/25/07 00:00','8/25/07 00:30'))

U. <- as.factor(c('0.2355','0.2602','0.2039','0.2571','0.1419','0.0778','0.3557',
              '0.3065','0.1559','0.0943','0.1519','0.1498','0.1574','0.1929','0.1407'))

dts<-strptime(as.character(date_time),'%m/%d/%y %H:%M')

plot(dts,as.numeric(U.),xlim=c('2007-08-24 17:30:00','2007-08-24 19:00:00'))
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么xlim不能在这种情况下工作以及如何解决它?请帮忙.

注意:忽略as.factor并且as.numeric,我添加这些以模仿实际数据,一旦我将其导入R

plot r

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

通过运行信号值计算`cumsum`

我想计算cumsum一下每次运行信号的值signal == 1.

示例数据:

set.seed(123)
df <- data.frame(Date = seq.Date(as.Date('2016-09-01'),as.Date('2016-09-30'),by = 'days'),
                 value = sample(1:10,size=30,replace = TRUE),
                 signal = c(rep(0,3),rep(1,2),rep(0,1),rep(1,5),rep(0,6),rep(1,3),rep(0,5),rep(1,5)))

> head(df,12)
         Date value signal
1  2016-09-01    10      0
2  2016-09-02    10      0
3  2016-09-03     7      0
4  2016-09-04     8      1
5  2016-09-05     1      1
6  2016-09-06     5      0
7  2016-09-07     8      1
8  2016-09-08     3      1
9  2016-09-09     4      1
10 2016-09-10     3      1
11 2016-09-11     2      1
12 2016-09-12     5      0
Run Code Online (Sandbox Code Playgroud)

到目前为止我做了什么:

我的解决方案正在运行,但我认为使用dplyr …

r dplyr data.table

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

超过 5 年的移动平均线,日期不规则

我有大量文件(~1200),每个文件都包含一个大的时间序列,其中包含有关地下水高度的数据。每个文件的系列的开始日期和长度都不同。日期之间可能存在较大的数据间隔,例如(此类文件的一小部分):

Date        Height (cm)
14-1-1980   7659
28-1-1980   7632
14-2-1980   7661
14-3-1980   7638
28-3-1980   7642
14-4-1980   7652
25-4-1980   7646
14-5-1980   7635
29-5-1980   7622
13-6-1980   7606
27-6-1980   7598
14-7-1980   7654
28-7-1980   7654
14-8-1980   7627
28-8-1980   7600
12-9-1980   7617
14-10-1980  7596
28-10-1980  7601
14-11-1980  7592
28-11-1980  7614
11-12-1980  7650
29-12-1980  7670
14-1-1981   7698
28-1-1981   7700
13-2-1981   7694
17-3-1981   7740
30-3-1981   7683
14-4-1981   7692
14-5-1981   7682
15-6-1981   7696
17-7-1981   7706
28-7-1981   7699
28-8-1981   7686
30-9-1981   7678
17-11-1981  7723
11-12-1981  7803
18-2-1982   7757
16-3-1982   7773 …
Run Code Online (Sandbox Code Playgroud)

r date time-series

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

使用purrr重命名多个数据帧列

我有以下包含名为列的数据框列表 cyl

# Create 3 dataframes with identical column names
mt_list <- list(head(mtcars[, 1:2]), tail(mtcars[, 1:2]), mtcars[13:18, 1:2])
mt_list
#> [[1]]
#>                    mpg cyl
#> Mazda RX4         21.0   6
#> Mazda RX4 Wag     21.0   6
#> Datsun 710        22.8   4
#> Hornet 4 Drive    21.4   6
#> Hornet Sportabout 18.7   8
#> Valiant           18.1   6
#> 
#> [[2]]
#>                 mpg cyl
#> Porsche 914-2  26.0   4
#> Lotus Europa   30.4   4
#> Ford Pantera L 15.8   8
#> Ferrari Dino …
Run Code Online (Sandbox Code Playgroud)

r purrr tidyverse

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