使用R比较来自不同列但来自同一数据帧的元素
我试图确定序列相似性。 我想创建一个函数来比较使用R比较来自不同列但来自同一数据帧的元素,r,dataframe,compare,R,Dataframe,Compare,我试图确定序列相似性。 我想创建一个函数来比较df元素,例如: V1 V2 V3 V4 1 C D A D 2 A A S E 3 V T T V 4 A T S S 5 C D R Y 6 C A D V 7 V T E T 8 A T A A 9 R V V W 10 W R D D 我想比较第一列的第一个元素和第二列的第一个元素。如果匹配==1
df
元素,例如:
V1 V2 V3 V4
1 C D A D
2 A A S E
3 V T T V
4 A T S S
5 C D R Y
6 C A D V
7 V T E T
8 A T A A
9 R V V W
10 W R D D
我想比较第一列的第一个元素和第二列的第一个元素。如果匹配==1,则为0。然后将第一列中的第二个元素与第二列中的第二个元素进行比较。等等
例如:
C != D -----0
A == A -----1
这样我想比较第1列和第2列,然后比较第3列和第4列。
然后将第2列与第3列和第4列进行比较。
然后是第3列和第4列
输出将只是数字:
0
1
0
0
0
0
0
0
0
0
我尝试了以下方法,但无效:
compared_df <- ifelse(df_trial$V1==df_trial$V2,1,ifelse(df_trial$V1==df_trial$V2,0,NA))
compared_df
compared_df正如@Ronak Shah在评论中所说,在您想要比较两个值的情况下,使用以下内容就足够了:
df$matches <- as.integer(df$V1 == df$V2)
那将是df$matches谢谢你的建议。第一种方法适用于小样本的比较。对于带有“apply”的第二个选项,我试图仅确定它们是否匹配。“apply()”是否仍然适用于此?@student24是的,当然取决于您希望实现的目标。但是这两种方法得到的结果是相同的,只是第二种方法适用于需要比较多于2列的情况
df$matches <- as.integer(df$V1 == df$V2)
df$matches = apply(df, 1, function(x) as.integer(length(unique(x)) == 1))