我正在制作一个简单的条形图,并使用一些简单的数据重复旧脚本,但它拒绝返回图形.
这是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) 如果我有一个可变长度的矢量列表:
[[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) 我是使用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函数它是更快的方法.
我想在使用 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) 我正在使用一个数据框架,该数据框架包括不同的组,并且都有多年的范围。像这样:
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 的新手,正在寻找计算 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。
我有一个用逗号分隔的字符串的数据框:
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)
你有什么建议吗?非常感谢!
我已经成功地使用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”而不是原始值?
谢谢!
我有一个大数据框,其中百分比写为 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)
谢谢。
我正在尝试重新创建以下报告第 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所以如果有另一个工具效果更好,我可以使用另一个包。