我有2个数据帧df1和df2,我想检查df2中是否有4列的值与df1相同的行?
df1
a1 a2. a3 a4
1 2 3 4
1 2 3 5
1 6 3 3
1 2 8 4
df2
a1 a2. a3 a4
1 2 3 9
4 2 8 5
1 6 3 7
5 2 8 2
假设我要选择df2中在a1,a2和a3中的df1中具有相同值的行:
输出
a1 a2. a3 a4
1 2 3 9
1 6 3 7
答案 0 :(得分:3)
使用dplyr
,我们可以从a4
取消选择列df1
,执行inner_join
,然后使用distinct_all()
删除重复的行。
library(dplyr)
df2 %>%
inner_join(select(df1, -a4)) %>%
distinct_all()
a1 a2. a3 a4
1 1 2 3 9
2 1 6 3 7
或使用base R
:
unique(merge(df1[,-4], df2))
或者:
unique(merge(subset(df1, select = -a4), df2))
答案 1 :(得分:1)
使用基数R,我们可以#define N 10
typedef char stackType;
typedef struct {
int top;
stackType S[N];
} stack;
void createStack(stack *ps) {
ps->top = -1;
}
int push(stackType data, stack *ps) {
if (ps->top < N - 1) {
ps->top++;
ps->S[ps->top] = data;
return 1;
}
return 0;
}
void Ex01() {
stack *stack;
createStack(&stack);
char input;
printf("Please enter letters. Enter 'c' top stop:\n");
scanf(" %c", &input);
while (input != 'c') {
push(input, &stack);
scanf(" %c", &input);
}
}
int main() {
Ex01();
}
对数据框逐行关注列,并在paste
中选择匹配的行。
df2