如何交换2列之间的值 [英] How to swap values between 2 columns

查看:100
本文介绍了如何交换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 V3 < - V1
导致

  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 V3
1  a  2
2  a  3
4  b  1

and want to swap values between V1 and V3 based on the value of V2 as follows: if V2 == 'b' then V1 <- V3 and V3 <- V1 resulting in

V1 V2 V3
1  a  2
2  a  3
1  b  4

I 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 V3
1  1  a  2
2  2  a  3
3  1  b  4

这篇关于如何交换2列之间的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆