通过更改数据框R

时间:2016-03-28 23:16:05

标签: r excel dplyr

我有一个如下数据框,

data = data.frame(name=letters, values = c(0.183487333,0.487690292, 0.510321455,0.616632727, 0.660789818, 0.845322255, 0.867910555, 0.911842909, 0.913312571, 1.017638286, 15.97454546, 16.20765382, 16.27542982, 16.307264, 17.38325527, 17.54139927, 70.08443928, 70.26106764, 75.79405382, 77.72412946, 79.58750724, 84.67373672, 87.04692364, 88.58626037, 94.79392582, 100.0000))
data = data %>% mutate(diff = abs(values - median(values)), rank_diff = dense_rank(diff)) %>% arrange(diff) 

头(数据)

  

头(数据)

  name   values       diff rank_diff
1    n 16.30726 0.01591709         1
2    m 16.27543 0.01591709         2
3    l 16.20765 0.08369309         3
4    k 15.97455 0.31680145         4
5    o 17.38326 1.09190836         5
6    p 17.54140 1.25005236         6

> median(data$values)
[1] 16.29135

我有名字和值列,我创建了差异列,通过取值的中间值的绝对差值,然后根据差异对其进行排名。

这里的想法是通过取最小数量的值将中值更改为新值。理想情况下,我希望有一个函数,我可以使用新的中值和行数传递数据帧。一旦我们传递了行数,就应该在前N行中相等地更改这些值,以便整个列的中值变为新的中值。

我的功能如下,数据将是数据帧,值将是新的中值,行将是行数。

fun <- changemedian(data, value, rows) {
}

这里假设我将值传递为16.5并将行传递为5,我希望前10行的值平均变化,因此,中值将等于17.因为我根据绝对值对DF进行了排名diff,我对这些值的每个差异,中值都有一些变化。我试图在前5个值中更改.5,使其为16.5,并且它在excel中工作。

我正在尝试使用各种方式在R中执行此操作,但没有取得多大成功。任何人都可以帮我这样做。任何寻求的想法都会有所帮助。

由于

0 个答案:

没有答案