Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 基于另一个数据帧的数据帧上的条件if_R - Fatal编程技术网

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"