小编mar*_*kus的帖子

旧ggplot脚本给出一个空白图表的问题

我正在制作一个简单的条形图,并使用一些简单的数据重复旧脚本,但它拒绝返回图形.

这是dput数据框:

papers <- structure(list(YEAR = c(1957, 1970, 1981, 1982, 1987, 1988, 1990, 
1993, 1994, 1995, 1996, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018), count = c(1L, 
1L, 1L, 2L, 1L, 14L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 3L, 4L, 5L, 
3L, 5L, 4L, 6L, 5L, 13L, 4L, 5L, 6L, 12L, 2L)), row.names = c(NA, 
-27L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

这是ggplot脚本:

ggplot(papers, aes(x=YEAR,y=count)) + 
scale_y_continuous(limit=c(0,20),expand=c(0, 0)) +
scale_x_continuous(breaks=c(1955,1965,1975,1985,1995,2005,2015),
                   labels=c(1955,1965,1975,1985,1995,2005,2015)) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

2
推荐指数
1
解决办法
47
查看次数

将可变长度列表转换为R中的矩阵

如果我有一个可变长度的矢量列表:

[[1]]
[1] 1 2 3 4

[[2]]
[1] 4 5 6

[[3]]
[1] 1 2 3 4 5 6 7 8 9

[[4]]
[1] 'a' 'b' 'c'
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为数据框/逻辑矩阵,列表元素表示为列?

即数据框如:

    1 2 3 4 5 6 7 8 9 'a' 'b' 'c'
[1] 1 1 1 1 0 0 0 0 0  0   0   0
[2] 0 0 0 1 1 1 0 0 0  0   0   0
[3] 1 1 1 1 1 1 1 1 1  0   0 …
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
1
解决办法
74
查看次数

双循环矩阵代替使用循环R.

我是使用apply/purrr函数的新手.我不知道何时以及如何使用此功能.我有矩阵的双循环,我想避免它们.有一种方法可以做到吗?我必须做这个操作(见下面的代码)

NCols=4
NRows=4

set.seed(1234)
myMat<-matrix(runif(NCols*NRows), ncol=NCols)
myMat

norm=matrix(0,NRows,NCols)

 for (i in 1:nrow(myMat)){
    for (j in 1:nrow(myMat)){
      norm[i,j] <- sum((myMat[i,]-myMat[j,])^2)
    }
  }
Run Code Online (Sandbox Code Playgroud)

谢谢

对@markus使用dist函数它是更快的方法.

loops for-loop r matrix apply

2
推荐指数
1
解决办法
82
查看次数

R 从管道列表中选择项目

我想在使用 purrr:map 对其应用另一个函数之前按索引从列表中选择项目。我尝试了以下方法,但找不到有效的方法。

require(dplyr)
require(purrr)

dat <- list(1:3,
     4:6,
     letters[1:3])

# I can select one item

dat[1]

# I can select two items

dat[c(1,2)]

# But how can I do this in a pipeline by index?

dat %>% map(mean)

dat %>%
  filter(c(1,2)) %>%
  map(mean)

dat %>%
  keep(1,2) %>%
  map(mean)

dat %>%
  select(1,2) %>%
  map(mean)
Run Code Online (Sandbox Code Playgroud)

r list subset magrittr purrr

2
推荐指数
1
解决办法
1619
查看次数

在数据帧中的组内按时间倒序编号生成(生成:0,-1,-2等)

我正在使用一个数据框架,该数据框架包括不同的组,并且都有多年的范围。像这样:

df <- data.frame(group = c(rep("aaa", 3), rep("bbb", 3), rep("ccc", 3)), year = c(2016:2018))
df  

   group  year  
1  aaa    2016  
2  aaa    2017
3  aaa    2018
4  bbb    2016
5  bbb    2017
6  bbb    2018
7  ccc    2016
8  ccc    2017
9  ccc    2018  
Run Code Online (Sandbox Code Playgroud)

我想做的是创建一个列(世代),该列基于年份分配一个值,其中最新一代为0代,对于较老的代而言则倒数。像这样:

   group  year  generation
1  aaa    2018  0
2  bbb    2018  0
3  ccc    2018  0
4  aaa    2017  -1
5  bbb    2017  -1
6  ccc    2017  -1 
7  aaa    2016  -2
8  bbb    2016  -2 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

2
推荐指数
1
解决办法
48
查看次数

如何编写函数来计算 R 中的 H 指数?

我是 R 的新手,正在寻找计算 h 指数。

H指数是量化科学生产力的流行指标。形式上,如果f是对应于每个出版物的引用次数的函数,我们计算 h 指数如下:

首先,我们将值f从最大值到最小值排序。然后,我们寻找最后一个f大于或等于该位置的位置(我们称这个位置为 h)。

例如,如果我们有一位研究人员发表了 5 篇论文 A、B、C、D 和 E,分别有 10、8、5、4 和 3 次引用,那么 h 指数等于 4,因为第 4 次发表有 4 次引用而第 5 篇只有 3。相反,如果相同的出版物有 25、8、5、3 和 3 次引用,那么索引为 3,因为第四篇论文只有 3 次引用。

谁能建议更聪明的方法来解决这个问题

a <- c(10,8,5,4,3)
Run Code Online (Sandbox Code Playgroud)

我期望 h 索引值的输出为 4。

r function

2
推荐指数
1
解决办法
666
查看次数

将不均等的逗号分隔的字符串拆分为列并填充缺失值

我有一个用逗号分隔的字符串的数据框:

df <- data.frame(x = c("a,b,c", "a", "a,b"))
Run Code Online (Sandbox Code Playgroud)

我想将字符串拆分为单独的列,以产生3个新列。对于少于3个字符串的行,应在列中填充缺失值。

到目前为止,我尝试使用的strsplit命令是:

dfb <- strsplit(df, ",")
Run Code Online (Sandbox Code Playgroud)

返回错误:

非字符参数

我也尝试过单独使用,这将提供额外的“填充权”功能:

dfnew2 <- separate(df, c("X","Y"), sep = ",", fill = "right")
Run Code Online (Sandbox Code Playgroud)

这将返回错误:

var 必须计算为单个数字或列名,而不是字符向量

我的预期结果应该是一个数据框,例如:

X Y   Z
a b   c
a n/a n/a
a b   n/a
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗?非常感谢!

string split r multiple-columns

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

使用sjplot的plot_model函数时调整facet顺序和图例标签

我已经成功地使用plot_model函数sjplot绘制了多项逻辑回归模型。回归包含一个结果(Info Sought,具有 3 个级别)和 2 个连续预测变量(DSA、ASA)。我还更改了 ASA 的值,以便plot_model根据 ASA 平均值和 SD 绘制预测效果结果:

plot1 <- plot_model(multinomialmodel , type = "pred", terms = c("DSA", "ASA[meansd]")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我有两个定制问题:

1) 分面顺序:分面顺序基于结果级别的默认字母顺序(“展开”然后“第一张图片”然后“多张图片”)。有没有办法可以调整这个?在运行和绘制模型之前,我尝试使用 来重新排序级别factor()(如此处的示例,但这并没有导致生成的构面顺序发生任何变化。ggplot2也许可以通过 ggplot2 来代替,如此处提供的第一个解决方案中所示

2) 图例标签:图例当前使用 ASA 的 -1 SD、平均值和 +1 SD 值来标记绘制的线;有没有办法调整这些标签,而不是简单地说“-1 SD”、“平均值”和“+1 SD”而不是原始值?

谢谢!

r facet ggplot2 legend-properties sjplot

2
推荐指数
1
解决办法
6962
查看次数

用R中的小数转换所有%

我有一个大数据框,其中百分比写为 10% 而不是 0.1。并非所有列都是百分比,但相当多的是。

有没有一种优雅的方法将所有 % 转换为小数?我特别关心百分比可能大于 100% 的情况,并且该规则可以应用于整个 tibble,而不必弄清楚要定位哪些列。

示例如果不清楚......这个:

tibble(cola = c("hello", "good bye", "hi there"), colb = c("10%", "20%", "100%"), colc = c(53, 67, 89),cold = c("10%", "200%", "50%") )
Run Code Online (Sandbox Code Playgroud)

对此:

tibble(cola = c("hello", "good bye", "hi there"), colb = c(.10, .20, 1.0), colc = c(53, 67, 89),cold = c(.10, 2.0, .5) )
Run Code Online (Sandbox Code Playgroud)

谢谢。

replace r character percentage dataframe

2
推荐指数
1
解决办法
115
查看次数

条形图:将一个堆叠条形图与一个躲避条形图结合起来

我正在尝试重新创建以下报告第 4 页上的条形图:

在此输入图像描述

该人物有三个条形,前两个堆叠在一起,第三个则躲在旁边。我见过这个问题的迭代,但没有一个以这种精确的方式重新创建这个数字。

这是数据:

a <- rep(c('RHB', 'FERS', 'CSRS'), 3)
b <- c(rep('Assets', 3), rep('Amount Past Due', 3), 
       rep('Actuarial Liability', 3))
c <- c(45.0, 122.5, 152.3, 47.2, 3.4, 4.8, 114.4, 143.4, 181.3)

df <- data.frame(a,b,c)
names(df) <- c('Fund', 'Condition', 'Value')
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经做到了:

p <- ggplot(subset_data, aes(fill=Condition, y=Value, x=Fund)) + 
  geom_bar(position="stack", stat="identity") + 
  coord_flip() 
Run Code Online (Sandbox Code Playgroud)

我并不偏爱,ggplot所以如果有另一个工具效果更好,我可以使用另一个包。

r ggplot2

2
推荐指数
1
解决办法
363
查看次数