Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于条件计数频率的数据框添加列_R_Dataframe_Counter_Frequency - Fatal编程技术网

R 基于条件计数频率的数据框添加列

R 基于条件计数频率的数据框添加列,r,dataframe,counter,frequency,R,Dataframe,Counter,Frequency,我有这样的数据帧 #dt # a b c #1: a 1 d #2: a 1 d #3: b 0 b #4: b 1 d #5: b 0 b 我想得到的是列T,每行的行数都有计数器,符合如下条件:b=1和c=d #dt # a b c counter #1: a 1 d 2 #2: a 1 d 2 #3: b 0 d 1 #4: b 1 d 1 #5: b 0 b 0 有什么办法吗?试试这个: library(dplyr) dt = data.frame(a = c("a","a"

我有这样的数据帧

#dt
#   a b c
#1: a 1 d
#2: a 1 d
#3: b 0 b
#4: b 1 d
#5: b 0 b
我想得到的是列T,每行的行数都有计数器,符合如下条件:b=1和c=d

#dt
#   a b c counter
#1: a 1 d 2
#2: a 1 d 2
#3: b 0 d 1
#4: b 1 d 1
#5: b 0 b 0
有什么办法吗?

试试这个:

library(dplyr)
dt =  data.frame(a = c("a","a","b","b","b"),
                 b= c(1,1,0,1,0),
                 c = c("d","d","b","d","b"))
dt <- dt %>%
  mutate(counter = (b == 1) +( c == "d") )
库(dplyr)
dt=数据帧(a=c(“a”、“a”、“b”、“b”),
b=c(1,1,0,1,0),
c=c(“d”、“d”、“b”、“d”、“b”))
dt%
变异(计数器=(b==1)+(c==“d”))

我使用了@FALL-Gora-answer

dt %>% mutate(counter = as.numeric(((b == 1) & ( c == "d"))))
但我补充说

dt %>% group_by(a) %>% mutate(counter1=sum(counter))

它现在可以工作了

数据帧中的所有行是否都适用相同的条件,或者某些行/所有行是否可能存在不同的条件?是否要为每个
a
计算
计数器
<代码>df%>%分组依据(a)%>%变异(计数器=总和(b==1&c==d'))?最后一个值0应该是1吗?条件相同,但groupby会改变df的大小,不是吗?我只需要为每一行添加新列OK..检查
c
列的输入和输出,它们是不同的。类似于这样,但对于a列中的b值,它给出了2,如何改进它,应该只有1如果您希望两个条件都验证为一的行,请尝试以下操作:``dt%mutate(计数器=作为数字((b==1)和(c==d)))```