本文介绍了如何交换2列之间的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我有一个包含3个变量和250K记录的数据框。例如考虑 > df< - data.frame(V1 = c(1,2,4),V2 = c(a,a,b),V3 = c(2,3,1)) V1 V2 V3 1 a 2 2 a 3 4 b 1 并希望根据V2的值交换V1和V3之间的值,如下所示:如果 V2 =='b'然后 V1 和 V3 导致 V1 V2 V3 1 a 2 2 a 3 1 b 4 / pre> 我尝试了一个循环,但它需要永远。如果我使用Perl,需要几秒钟。我相信这个任务也可以在R中有效地完成。 解决方案尝试这个 > df< - data.frame(V1 = c(1,2,4),V2 = c(a,a,b),V3 = c(2,3,1))> df [df $ V2 ==b,c(V1,V3)]< - df [df $ V2 ==b,c(V3,V1)] > df V1 V2 V3 1 1 a 2 2 2 a 3 3 1 b 4 I have a dataframe with 3 variables and 250K records. As an example consider > df <- data.frame(V1=c(1,2,4), V2=c("a","a","b"), V3=c(2,3,1))V1 V2 V31 a 22 a 34 b 1and want to swap values between V1 and V3 based on the value of V2 as follows: if V2 == 'b' then V1 <- V3 and V3 <- V1resulting inV1 V2 V31 a 22 a 31 b 4I tried a do loop but it takes forever. If I use Perl, it takes seconds. I believe this task can be done efficiently in R as well. Any suggestions are appreciated. 解决方案 Try this> df <- data.frame(V1=c(1,2,4), V2=c("a","a","b"), V3=c(2,3,1))> df[df$V2 == "b", c("V1", "V3")] <- df[df$V2 == "b", c("V3", "V1")] > df V1 V2 V31 1 a 22 2 a 33 1 b 4 这篇关于如何交换2列之间的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-22 23:05