小编Eri*_*ail的帖子

在数据框内连接/合并两列

说我有这个数据,

(df <- data.frame( col1 = c('My','Your','His','Thir'), col2 = c('Cat','Dog','Fish','Dog')))

  col1 col2
1   My  Cat
2 Your  Dog
3  His Fish
4 Thir  Dog
Run Code Online (Sandbox Code Playgroud)

我想要像这样组合列

`some magic`

  col1 col2      col3
1   My  Cat    My Cat
2 Your  Dog  Your Dog
3  His Fish  His Fish
4 Thir  Dog  Thir Dog
Run Code Online (Sandbox Code Playgroud)

我该怎么办?也许用这样的逗号(,),

`some magic`

  col1 col2      col3
1   My  Cat    My, Cat
2 Your  Dog  Your, Dog
3  His Fish  His, Fish
4 Thir  Dog  Thir, Dog
Run Code Online (Sandbox Code Playgroud)

merge join r data-management

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

R gregexpr上的正则表达式匹配

我正在尝试计算连续3次"a"事件的实例"aaa".

该字符串将包括较低的字母表,例如 "abaaaababaaa"

我尝试了下面这段代码.但这种行为并不是我想要的.

x<-"abaaaababaaa";
gregexpr("aaa",x);
Run Code Online (Sandbox Code Playgroud)

我希望匹配返回"aaa"事件的3个实例,而不是2.

假设索引从1开始

  • 第一次出现的"aaa"是指数3.
  • 第二次出现的"aaa"是在索引4处.(这不是由gregexpr捕获的)
  • 第三次出现的"aaa"是指数10.

regex string r

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

对于在时间1和时间2之间没有发生任何变化的情况,删除所有id的情况

我有两个数据框,包含一系列案例.一个从时间1和一个从时间2.我正在寻找一种方法来快速识别在时间1和时间2之间发生变化的情况,我有点卡住.

这是一个例子.所以,我从时间1开始有一个数据框,

df.t1 <- data.frame(id = c(1,1,1,2,2,3,3,5,5,6), ABC = LETTERS[1:10], Num = 101:110)
Run Code Online (Sandbox Code Playgroud)

它看起来像这样,

df.t1
   id ABC Num
1   1   A 101
2   1   B 102
3   1   C 103
4   2   D 104
5   2   E 105
6   3   F 106
7   3   G 107
8   5   H 108
9   5   I 109
10  6   J 110
Run Code Online (Sandbox Code Playgroud)

时间两卷

df.t2 <- df.t1
Run Code Online (Sandbox Code Playgroud)

并发生一些变化,

df.t2[3,3] <- 104
df.t2[2,2] <- "H"
df.t2[8,3] <- 999
df.t2[10,3] <- NA
df.t2[11,] <- c(3, "J", 107) …
Run Code Online (Sandbox Code Playgroud)

r data-management

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

保持data.frame(或表)中的范围

我想这样做

set.seed(667) 
df <- data.frame(a = sample(c(c(4,7),11,NA),  10, rep = TRUE), 
                 b = sample(c(1, 2, 3, NA, 5, 6),  10, rep=TRUE), 
                 c = sample(c(11, 12, 13, 14, 15, 16),  10, rep=TRUE))
Run Code Online (Sandbox Code Playgroud)

但没有得到这个,

df
    a  b  c
1   4 NA 12
2   7  6 12
3  NA NA 14
4  11  1 16
5  NA  2 14
6  NA  3 13
7  11 NA 13
8  NA  6 15
9   7  3 16
10  7  5 16
Run Code Online (Sandbox Code Playgroud)

我希望得到一些东西,我在某些地方有一个范围,

    a  b  c …
Run Code Online (Sandbox Code Playgroud)

r range

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

重新编码重新编码之前和之后的级别概述

我有dplyr::recode一些因素,我正在寻找一种干净的方式来制作LaTeX表,比较新旧类别,即水平.

以下是使用cyl`mtcars 的问题的说明.先是一些包裹,

# install.packages("tidyverse", "stargazer","reporttools") 
library(tidyverse) 
Run Code Online (Sandbox Code Playgroud)

以及我打算使用的数据,

mcr <- mtcars %>% select(cyl) %>% as_tibble() 
mcr %>% print(n=5)
#> # A tibble: 32 x 1
#>     cyl
#> * <dbl>
#> 1  6.00
#> 2  6.00
#> 3  4.00
#> 4  6.00
#> 5  8.00
#> # ... with 27 more rows
Run Code Online (Sandbox Code Playgroud)

现在,我创建了两个新因子,一个有三个类别,cyl_3col一个有两个cyl_is_red,即:

mcr_col <- mcr %>% as_tibble() %>%
    mutate(cyl_3col = factor(cyl, levels = c(4, 6, 8),labels = c("red", "blue", "green")),
           cyl_is_red …
Run Code Online (Sandbox Code Playgroud)

latex r stargazer dplyr

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

readxl,单个 .xlsx 工作簿中的选定工作表

如何从 .xlsx-workbook简洁地导入选定的工作表,最好使用?

随着下面的代码(方法#1)我可以导入所有工作表在一个单一的.xlsx工作簿,但我怎么filter()还是select()?代码的第二位,使用map_dfr(), 方法#2,有点简洁,但是使用这种方法,sheet向量会丢失它的名称并变成 1, 2, ctc。

说我只想导入工作表iris和mtcars

sh_to_impt <- c('iris', 'mtcars')
Run Code Online (Sandbox Code Playgroud)

需要的包裹,

library(readxl)
library(tidyverse)
library(purrr)
Run Code Online (Sandbox Code Playgroud)

代码方法#1,

path <- readxl_example("datasets.xlsx")
datasets_data <- readxl::excel_sheets(path = path) %>% 
  purrr::set_names() %>% select(mtcars) %>% 
  purrr::map_dfr(
    ~ readxl::read_excel(path = path, sheet = .x)
    , .id = "sheet"
  )

datasets_data 
# A tibble: 1,253 x 24
   sheet Sepal.Length Sepal.Width Petal.Length Petal.Width Species
   <chr>        <dbl>       <dbl>        <dbl>       <dbl> <chr>  
 1 iris           5.1         3.5          1.4 …
Run Code Online (Sandbox Code Playgroud)

r readxl tidyverse

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

R中的png()函数无法创建尺寸大于3000x3000px的png文件

我试图使用ggplotand生成一些地图sp,我有一个3000+ x 3000+像素原始大小的底图,我也有一些2000+ x 2000+像素。有趣的是,直到现在我仍然无法创建3000+ x 3000+像素 png 文件,因为 R 给了我以下错误:

Error in png(chart.filename, width = basemap.xlength, height = basemap.ylength,  : 
  unable to start png() device
In addition: Warning messages:
1: In png(chart.filename, width = basemap.xlength, height = basemap.ylength,  :
  Unable to allocate bitmap
2: In png(chart.filename, width = basemap.xlength, height = basemap.ylength,  :
  opening device failed
Run Code Online (Sandbox Code Playgroud)

这是对R的限制吗?我怎么能熬过去呢?谢谢。

我正在使用带有 R 2.15.0 的 Win7。

png r ggplot2

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

计算年龄和月份的年龄并融化数据

我正在处理一些时间数据,而且我在将时差转换为数年和数月时遇到了问题.

我的数据或多或少看起来像这样,

dfn <- data.frame(
Today  = Sys.time(),
DOB  = seq(as.POSIXct('2007-03-27 00:00:01'), len= 26, by="3 day"),
Patient  = factor(1:26, labels = LETTERS))
Run Code Online (Sandbox Code Playgroud)

首先,我从DOB今天的数据(Today)中减去birth()形式的数据.

dfn$ageToday <-  dfn$Today - dfn$DOB
Run Code Online (Sandbox Code Playgroud)

这给了我Time difference in days.

dfn$ageToday
 Time differences in days
  [1] 1875.866 1872.866 1869.866 1866.866 1863.866
  [6] 1860.866 1857.866 1854.866 1851.866 1848.866
 [11] 1845.866 1842.866 1839.866 1836.866 1833.866
 [16] 1830.866 1827.866 1824.866 1821.866 1818.866
 [21] 1815.866 1812.866 1809.866 1806.866 1803.866
 [26] 1800.866
 attr(,"tzone")
 [1] ""
Run Code Online (Sandbox Code Playgroud)

这是我提问的第一部分; 如何将此差异转换为年和月(四舍五入到几个月)? …

time r

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

ggplot2,geom_segment的颜色段

我正在研究一些室内和室外活动的相当精细的情节,我有点卡住了.我想添加着色用了室内/室外用(纪要Xmin,Ymin以及Zmin中)geom_segment我的阴谋的步骤(见下文).它目前仅 Zmin被着色(使用连续变量,有点关闭).

我粘贴了所有代码以防其他人想要构建这样的东西,我最初的灵感来自这篇博文.

任何帮助将不胜感激,谢谢!

df <- data.frame(
  date = seq(Sys.Date(), len= 156, by="4 day")[sample(156, 26)],
  action = paste('Then', LETTERS[1:13], 'happed, which was not related to', LETTERS[14:26]),
  IndoorOutdoor = rep(c(-1,1), 13),
  Xmin = sample(90, 26, replace = T),
  Ymin = sample(90, 26, replace = T),
  Zmin = sample(90, 26, replace = T)
)

df$XYZmin <- rowSums(df[,c("Xmin", "Ymin", "Zmin")])*df$IndoorOutdoor

# install.packages("ggplot2", dependencies = TRUE)
require(ggplot2)

# step 1 
plot <- …
Run Code Online (Sandbox Code Playgroud)

time plot visualization r ggplot2

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

使用泰勒展开估计比率的标准偏差

我有兴趣构建一个R函数,我可以用它来测试泰勒级数近似的极限.我知道我正在做的事情是有限的,但这正是我希望调查的那些限制.

我有两个正态分布的随机变量x和y. x平均值为7,标准偏差(sd)为1. y平均值为5,sd值为4.

me.x <- 4; sd.x <- 1
me.y <- 5; sd.y <- 4
Run Code Online (Sandbox Code Playgroud)

我知道如何估算平均比例y/x,就像这样

# E(y/x) = E(y)/E(x) - Cov(y,x)/E(x)^2 + Var(x)*E(y)/E(x)^3
me.y/me.x - 0/me.x^2 + sd.x*me.y/me.x^3
[1] 1.328125
Run Code Online (Sandbox Code Playgroud)

然而,我仍然坚持如何估计比率的标准差?我意识到我必须使用泰勒扩展,但不是如何使用它.

我做了一个简单的模拟

 x <- rnorm(10^4, mean = 4, sd = 1);  y <- rnorm(10^4, mean = 5, sd = 4)
 sd(y/x)
 [1] 2.027593
 mean(y/x)[1]
 1.362142
Run Code Online (Sandbox Code Playgroud)

estimation r taylor-series

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