每组内的排名

时间:2017-03-15 03:01:00

标签: r

考虑数据:

set.seed(123)

x <- rbinom(12, 1, .5)  
y <- (x==0) * rexp(12, 1/100)
z <- (x==1) * rexp(12, 1/220)
group <- sample( rep(1:2, each=6) )

d <- data.frame(x, y, z, group)

首先按y排序数据,然后按z

排序
d <- d[order(d$y,d$z),]

现在在每个小组中,我想给予排名。以下代码可以正常工作:

ds <- split(d, d$group)

ds1 <- ds[[1]]
ds1$rank <- 1:nrow(ds1)

ds2 <- ds[[2]]
ds2$rank <- 1:nrow(ds2)

但是如果没有拆分数据框,我想在每个组中排名。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

<?php require("config.php"); $id = $_GET['id']; $sql = "SELECT * FROM contracts WHERE id= '$id'"; $result = $con->query($sql); while ($row = $result->fetch_assoc()) { $subunit = explode(',',$row['subunit']); ?> <form action="" method="GET"> ID: <?php echo $id; ?><br> <input type="hidden" name="id" value="<?php echo $id; ?>" /> Sub-Category Unit: <input type="checkbox" name="subunit[]" value="OFL" <?php in_array('OFL', $subunit) ? print "checked" : ""; ?>>OFL <input type="checkbox" name="subunit[]" value="HVTL" <?php in_array('HVTL', $subunit) ? print "checked" : ""; ?>>HVTL <input type="checkbox" name="subunit[]" value="PINS" <?php in_array('PINS', $subunit) ? print "checked" : ""; ?>>PINS <input type="checkbox" name="subunit[]" value="FEG" <?php in_array('FEG', $subunit) ? print "checked" : ""; ?>>FEG <input type="checkbox" name="subunit[]" value="PC" <?php in_array('PC', $subunit) ? print "checked" : ""; ?>>PC <input type="checkbox" name="subunit[]" value="PI" <?php in_array('PI', $subunit) ? print "checked" : ""; ?>>PI<br> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp Others: <input type="text" name="subunit[]" value="<?php echo $row['subunit']; ?>"/> <br><br> <input type="submit" name="edit" value="Update" /> </form> <?php } if(isset($_GET['edit']) ){ $subunit = isset($_GET ['subunit']) ? implode(",", $_GET['subunit']) :null; $upd= "UPDATE `contracts` SET `subunit` = '$subunit' WHERE `id` = '$id'"; if($do_upd = $con->query($upd)) { echo "Update Success<br>"; echo "$upd <br>"; echo "$do_upd <br>"; echo "<a href='viewcheck.php?id=$id'>View</a>"; } else { echo "Update Fail<br>"; echo "$upd <br>"; echo "$do_upd <br>"; echo "<a href='viewcheck.php?id=$id'>View</a>"; } } ?> 方式:

dplyr

我们首先按library(dplyr) d %>% arrange(group, y, z) %>% group_by(group) %>% mutate(rank = 1:n()) %>% ungroup() 然后group然后y对data.frame进行排序,然后将其分组为z,然后为每个观察分配排名。

结果:

group

答案 1 :(得分:1)

以下是使用orig = "hbeojllok" 的选项。我们首先base R基于'group','y','z'列的数据集,然后使用order按'group'创建序列

ave