我刚刚开始使用 R 并尝试找出如何使用 ggplot 在箱形图上添加平均值和中位数标签。
我有一个数据集:单位、季度、天数:
dset <- read.table(text='Unit Quarter Days Z
HH 1Q 25 Y
PA 1Q 28 N
PA 1Q 10 Y
HH 1Q 53 Y
HH 1Q 12 Y
HH 1Q 20 Y
HH 1Q 43 N
PA 1Q 11 Y
PA 1Q 66 Y
PA 1Q 54 Y
PA 2Q 19 N
PA 2Q 46 Y
PA 2Q 37 Y
HH 2Q 22 Y
HH 2Q 67 Y
PA 2Q 45 Y
HH 2Q 48 Y …Run Code Online (Sandbox Code Playgroud) 大家好,我是R的新手,我正在尝试计算数据框中某个特定国家/地区的中等利润.我尝试了下面一个,但它对我不起作用.
data("Forbes2000", package = "HSAUR")
median(Forbes2000[,"sales","country"="United States"])
Run Code Online (Sandbox Code Playgroud) 我试图计算给定向量的中位数,但是当我尝试时我不断收到错误:
median(returns)
Error in median.default(returns) : need numeric data
> returns
[1] 0.001262733 -0.005048584 -0.009160197 0.010411955 -0.00542421
[6] -0.010982649 -0.005807832 0.000863131 -0.00210823 0.000117543
[11] 0.001319904 0.005307534 0.005246006 0.008469327 0.006006664
[16] -0.001411188 -0.011446652 0.002669714 0.003896259 -0.003060607
[21] 0.006306116 0.000895311 -0.006235211 -0.000856819 -0.00056599
[26] 0.00808345 0.00038652 -0.004070623 0.008398158 -0.005976036
[31] 0.011270873 0.007959499 0.003776885 -0.000591663 0.001163452
[36] 0.005759682 0.000678132 0.000609123 -0.000735042
40 Levels: -0.00056599 -0.000591663 -0.000735042 -0.000856819 ... 0.011270873
dput(returns)
structure(c(25L, 9L, 14L, 39L, 10L, 15L, 11L, 22L, 6L, 18L, 26L,
31L, 30L, …Run Code Online (Sandbox Code Playgroud) 我编写了一些返回未排序的奇数数组的中位数的代码,但没有返回偶数数组的中位数。
我知道,为了找到偶数数组的中位数,必须取数组的中间两个数字取它们的平均值,这就是中位数。我无法将其转换为可用的代码。除了这段代码的明显冗长之外,问题似乎出在第7-8行,我不明白为什么。
我更喜欢提示而不是答案,但是,如果您要发布一些固定的代码,我也可以接受。
def media(array)
sorted = array.sort
list = sorted.length
if list %2 != 0
(list + 1) / 2.0
else
even = ((list.to_f + 2) / 2) + ((list.to_f / 2)
return (even/2)
end
end
Run Code Online (Sandbox Code Playgroud) 我试图找到的中位数a[p],a[r]和a[q]在那里q = r+p/2.我的程序崩溃,即使它在我创建median方法之前有效,所以我假设有什么问题.有谁知道什么是错的?
这是我运行程序时显示的内容:
Welcome to DrJava. Working directory is C:\coding
> run QuickSort
[5, 2, 7, 3, 9, 7, 10, 3, 6, 3, 7, 2, 6, 7, 2, 1]
java.lang.StackOverflowError
at QuickSort.partition(QuickSort.java:39)
at QuickSort.qSort(QuickSort.java:13)
at QuickSort.qSort(QuickSort.java:13)
at QuickSort.qSort(QuickSort.java:13)
.
.
.
at QuickSort.qSort(QuickSort.java:13)
at QuickSort.qSort(QuickSort.java:13)
>
Run Code Online (Sandbox Code Playgroud)
最后一行不断重复.
完整代码:
import java.util.*;
public class QuickSort {
public static void main(String[] args) {
Integer[] vals = new Integer[]{5,2,7,3,9,7,10,3,6,3,7,2,6,7,2,1};
System.out.println(Arrays.toString(vals));
qSort(vals,0,vals.length-1);
System.out.println(Arrays.toString(vals));
} …Run Code Online (Sandbox Code Playgroud) 我有一个包含向量向量的数据结构,每个向量由大约 16000000 个双精度值组成。
我现在想要对这些向量进行中值组合,也就是说,对于每个原始向量,我取位置 i 处的值,计算这些向量的中值,然后将它们存储在位置 i 处的结果向量中。
我已经有了直接的解决方案,但速度慢得令人难以置信:
vector< vector<double> > vectors; //vectors contains the datavectors
vector<double> tmp;
vector<double> result;
vector<double> tmpmedian;
double pixels = 0.0;
double matrixcount = vectors.size();
tmp = vectors.at(0);
pixels = tmp.size();
for (int i = 0; i < pixels; i++) {
for (int j = 0; j < matrixcount; j++) {
tmp = vectors.at(j);
tmpmedian.push_back(tmp.at(i));
}
result.push_back(medianOfVector(tmpmedian));
tmpmedian.clear();
}
return result;
Run Code Online (Sandbox Code Playgroud)
medianOfVector 看起来像这样:
double result = 0;
if ((vec.size() % 2) != 0) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试确定n个元素列表的中位数,我只是看不出我做错了什么.
我有sorted(list)这样的元素是正确的顺序,但我得到一个中位数5.0而不是正确的4.5.
我的代码看起来像这样.
def median(lista):
median_even1 = 0
median_even2 = 0
median_sum = 0
median_average = 0
if len(lista) % 2 == 0:
sorted(lista)
median_even1 += lista[(len(lista)/2)]
median_even2 += lista[(len(lista)/2 - 1)]
median_sum = median_even1 + median_even2
median_average = (median_sum) // (2.0)
return median_average
else:
sorted(lista)
return lista[(len(lista) / 2)]
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我目前有一个数据框,看起来像这样:
result 1 result 2 result 3 median
item 1 8 7 6 7
item 5 1 2 3 2
item 1 6 5 4 5
item 5 3 4 5 4
Run Code Online (Sandbox Code Playgroud)
我想根据中位数删除重复项,在其中我想将重复项保留为较高的中位数。问题在于行名(项目1等)不是它们自己的列,因此$操作无法访问。
我该怎么做?提前致谢。
如果数据已给出属性,如何使用 Python 3 计算 pandas 列的集中趋势(中位数和众数)Jumlah_individu?