使用R计算数据框中列实体的出现

时间:2018-10-19 12:49:11

标签: r

我需要什么: 特定列的值重复多少次。

df <- Route1 Route2 Route3 Route4
       a       b      c      a
       d       c      a      k
       e       c      b      c
       c       a      a      b

现在,我想计算Route4(包括Route4)的值出现多少次。 预期结果是:

  Ans  <- Route1 Route2 Route3 Route4   Count
            a       b      c      a       2       #as a has come 2 times
            d       c      a      k       1       #as k has come 1 times
            e       c      b      c       2       #as c has come 2 times
            c       a      a      b       1       #as b has come 1 times

欢迎任何包裹或直接方式。

2 个答案:

答案 0 :(得分:1)

使用apply: 我们可以在每一行中查找Route4列数据,并测量其length

df$count <- apply(df, 1, function(x) length(which(x==x[4])))

输出:

    Route1 Route2 Route3 Route4 count
1      a      b      c      a     2
2      d      c      a      k     1
3      e      c      b      c     2
4      c      a      a      b     1

答案 1 :(得分:1)

我们可以使用rowSums。请注意,所有列都必须是字符,而不是因数。

df$count <- rowSums(df == df$Route4)

df
#   Route1 Route2 Route3 Route4 count
# 1      a      b      c      a     2
# 2      d      c      a      k     1
# 3      e      c      b      c     2
# 4      c      a      a      b     1

数据

df <- read.table(text = "Route1 Route2 Route3 Route4
       a       b      c      a
       d       c      a      k
       e       c      b      c
       c       a      a      b",
                  header = TRUE, stringsAsFactors = FALSE)