R 基于另一个数据帧的数据帧上的条件if
我有一个这样的数据框R 基于另一个数据帧的数据帧上的条件if,r,R,我有一个这样的数据框 ID VAR a 3 b 2 c 6 b 8 z 1 c 5 b 7 另一个是计算一个ID出现的次数 numb nrec a 1 b 3 c 2 z 1 我想做的是更改只有一条记录的所有ID的ID名称,p.e ID VAR -1 3 b 2 c 6 b 8 -1
ID VAR
a 3
b 2
c 6
b 8
z 1
c 5
b 7
另一个是计算一个ID出现的次数
numb nrec
a 1
b 3
c 2
z 1
我想做的是更改只有一条记录的所有ID的ID名称,p.e
ID VAR
-1 3
b 2
c 6
b 8
-1 1
c 5
b 7
这是一个丑陋的解决方案
> ind <- as.character(df2$numb[df2$nrec==1])
> df1$ID <- as.character(df1$ID)
> df1$ID[as.character(df1$ID) %in% ind] <- "-1"
> df1
ID VAR
1 -1 3
2 b 2
3 c 6
4 b 8
5 -1 1
6 c 5
7 b 7
编辑:使用基函数的更简洁的方法
ind <- as.character(df2$numb[df2$nrec==1])
levels(df1$ID)[levels(df1$ID)==ind] <- "-1"
你想把它改成什么?你能举一个例子来说明你更改的数据框是什么样子的吗?嗨,你能解释一下%in%操作符是如何工作的吗?它是否可以作为两个嵌套for循环使用?@user2287387查看一下
?%in%“
,您将看到所有相关的解释。
ind <- as.character(df2$numb[df2$nrec==1])
levels(df1$ID)[levels(df1$ID)==ind] <- "-1"
levels(df1$ID)[levels(df1$ID)==with(df1, levels(ID)[table(ID)==1])] <- "-1"