2017-08-01 6 views
0

Für jede Zeile möchte ich zählen, wie oft "type" mit einem num-Wert> 4 angezeigt wird, und dann eine neue Spalte erstellen. Für die erste Zeile erscheint "chair" also einmal mit einem Wert von 5, also bekommt es eine 1. Für die zweite Zeile dasselbe. Für die 3. Reihe erscheint das Sofa zweimal mit einem Wert> 4. Also alle einzigartige "Typen" wird bis mit dem gleichen Wert beenden:Anzahl der Vorkommen zählen [R]

df 
# name type num count 
# 1 black chair 4  1 
# 2 black chair 5  1 
# 3 black sofa 12  2 
# 4 red sofa 4  2 
# 5 red sofa 6  2 
+2

Haben Sie gemeint 'df%>% group_by (type)%>% muate (count = sum (num> 4))' oder mit ' Basis R' 'mit (df, ave (num> 4, Typ, FUN = Summe))' – akrun

+0

ja, danke! – NBC

Antwort

1
df$count = ave(df$num, df$type, FUN = function(x) sum(x>4)) 
df$count 
#[1] 1 1 2 2 2 
1

Wir

verwenden können
library(dplyr) 
df %>% 
    group_by(type) %>% 
    mutate(count = sum(num>4)) 

Oder mit base R (wie wir früher kommentiert)

df$count <- with(df, ave(num > 4, type, FUN = sum)) 
Verwandte Themen