我有一个包含几列的数据框,其中一列是rank,一个介于1和20之间的整数.我想创建另一个包含bin值的列,如"1-4","5-10","11- 15","16-20".
这样做最有效的方法是什么?
我看起来像这样的数据框(.csv格式):
rank,name,info
1,steve,red
3,joe,blue
6,john,green
3,liz,yellow
15,jon,pink
Run Code Online (Sandbox Code Playgroud)
我想在数据框中添加另一列,所以它会是这样的:
rank,name,info,binValue
1,steve,red,"1-4"
3,joe,blue,"1-4"
6,john,green, "5-10"
3,liz,yellow,"1-4"
15,jon,pink,"11-15"
Run Code Online (Sandbox Code Playgroud)
我现在这样做的方式不起作用,因为我想保持data.frame完好无损,如果df $的值在给定范围内,则只添加另一列.谢谢.
我想在我的data.frame对象中使用dplyr(并且不知道如何操作)对数值变量进行分类.
没有dplyr,我可能会这样做:
df <- data.frame(a = rnorm(1e3), b = rnorm(1e3))
df$a <- cut(df$a , breaks=quantile(df$a, probs = seq(0, 1, 0.2)))
Run Code Online (Sandbox Code Playgroud)
它会完成.但是,我更喜欢在我执行的其他操作的序列中使用某些dplyr函数(mutate我想).chaindata.frame
我正在使用cut函数将我的数据拆分为相同的bin,它可以完成工作,但我对它返回值的方式不满意.我需要的是箱子的中心而不是上端和下端.
我也尝试过使用cut2{Hmisc},这给了我每个箱子的中心,但是它在包含相同数量的观察的箱子中划分数据范围,而不是长度相同.
有人有解决方案吗?
我有一个带有整数列的数据框,我想用它作为参考来创建一个新的分类变量.我想将变量分成三组并自己设置范围(即0-5,6-10等).我试过cut但是根据正态分布将变量分成组,我的数据是正确的.我也尝试使用if/then语句,但这会输出一个真/假值,我想保留原始变量.我确信有一种简单的方法可以做到这一点,但我似乎无法弄明白.有关简单方法的任何建议吗?
我有这样的想法:
x x.range
3 0-5
4 0-5
6 6-10
12 11-15
Run Code Online (Sandbox Code Playgroud) 我在R中找到执行等频离散化的函数时遇到了麻烦.我偶然发现了'infotheo'软件包,但经过一些测试后发现算法被破坏了.CRAN似乎不再支持"dprep".
编辑:
为清楚起见,我不需要分隔箱之间的值.我真的想要相同的频率,如果一个值最终在两个箱中,则无关紧要.例如:
c(1,3,2,1,2,2)
Run Code Online (Sandbox Code Playgroud)
应该给一个箱子c(1,1,2)和一个c(2,2,3)
我想为直方图中的某些观察添加“id”注释。
到目前为止,我可以毫无问题地添加注释,但我希望注释的 'y' 位置是 bin + 1 的计数(出于审美原因)。
这是我到目前为止:
library(tidyverse)
library(ggrepel)
selected_obs <- c("S10", "S100", "S245", "S900")
set.seed(0)
values <- rnorm(1000)
plot_df <- tibble(id = paste0("S", 1:1000),
values = values) %>%
mutate(obs_labels = ifelse(id %in% selected_obs, id, NA))
ggplot(plot_df, aes(values)) +
geom_histogram(binwidth = 0.3, color = "white") +
geom_label_repel(aes(label = obs_labels, y = 100))
Run Code Online (Sandbox Code Playgroud)
我已经看到多个答案处理使用geom_text(stat = count", aes(y=..count.., label=..count..).
基于此,我尝试了这两种解决方法,但没有成功:
geom_label_repel(stat = "count", aes(label = obs_labels, y = ..count..)) 产生:“错误:geom_label_repel 需要以下缺失的美学:标签”geom_label_repel(aes(label = obs_labels, y = ..count..)) 产生“错误:美学必须是有效的计算统计数据。有问题的美学:y …预安装的地震数据集有5个变量和1000个观测值.
我想要创建的简单图表应该按地震深度类别显示平均地震震级(即Y轴=幅度,X轴=深度类别).
在这个数据集中,地震深度变量范围从40到680.我想将1000次地震深度观测分为8类,例如40 - 120,121 - 200,...... 600 - 680.然后,我会喜欢按深度类别取平均地震震级并将其绘制在折线图上.
我很感激任何帮助.谢谢!