2016-04-13 7 views
0

Dies ist meine erste Frage geht so hier ...= COUNTIFS mit absoluten Bezügen in R

mein Datensatz

person = c("a","a","a","a","b","b","b","b","c","c","d","d","d","d","d","e","e","e","f") 

training = c("q1","q2","q7","q4","q1","q2","q3","q4","q3","q4","q3","q4","q5","q6","q99","q18","q1","q9","q99") 

data = data.frame(person,training) 

ist Ich mag eine COUNTIFS Style-Funktion tun, um die Anzahl der Male zu zählen Eine Person wird basierend auf ihrer Position in der Liste aufgezeichnet - normalerweise würde ich dies in Excel mit einer absoluten Referenz tun, aber ich habe 93k Reihen von Daten, so dass es stürzt ab.

in Excel hätte ich: -

see excel table here

Wie replizieren ich dies in R für data$id?

Antwort

0

Hier ist eine Lösung mit dplyr:

library(dplyr) 
data <- group_by(data,person) %>% mutate(id=row_number()) 

data 

    person training id 
    (fctr) (fctr) (int) 
1  a  q1  1 
2  a  q2  2 
3  a  q7  3 
4  a  q4  4 
5  b  q1  1 
6  b  q2  2 
7  b  q3  3 
8  b  q4  4 
9  c  q3  1 
10  c  q4  2 
11  d  q3  1 
12  d  q4  2 
13  d  q5  3 
14  d  q6  4 
15  d  q99  5 
16  e  q18  1 
17  e  q1  2 
18  e  q9  3 
19  f  q99  1 
0

Hier ist eine mögliche Lösung:

data$id <- sapply(1:nrow(data),function(r) sum(data$person[1:r]==data$person[r])) 
Verwandte Themen