r - R在检查字母顺序的列中交换值
问题描述
我正在使用 R 中的一个 HUGE data.frame。我的数据集遵循以下模式:
+--------+------+------+------+------+ | | Col1 | Col2 | Col3 | Col4 | +--------+------+------+------+------+ | 1号线 | 43 | 一个 | 乙 | 56 | | 线2 | 103 | c | d | 85 | | 3号线 | 7 | F | E | 115 | | 4号线 | 8 | 克 | h | 0 | +--------+------+------+------+------+
我必须执行以下操作:
For each row:
If Col2 > Col3 (check alphabetical order of the values)
Swap values of Col 2 and Col 3
我需要以下结果:
+--------+------+------+------+------+ | | Col1 | Col2 | Col3 | Col4 | +--------+------+------+------+------+ | 1号线 | 43 | 一个 | 乙 | 56 | | 线2 | 103 | c | d | 85 | | 3号线 | 7 | E | F | 115 | | 4号线 | 8 | 克 | h | 0 | +--------+------+------+------+------+
我为此编写了一个 for 循环,但这需要很长时间!有没有更有效的方法来用 R 做到这一点?
谢谢!
解决方案
您可以使用转换功能。
> df
col1 col2 col3 col4
Line1 48 a b 56
Line2 103 c d 85
Line3 7 f e 115
Line4 8 g h 0
> df <- transform(df, col2 = pmin(col2, col3), col3=pmax(col2, col3))
> df
col1 col2 col3 col4
Line1 48 a b 56
Line2 103 c d 85
Line3 7 e f 115
Line4 8 g h 0
推荐阅读
- mysql - SQL开发与组合损失率
- vba - 为每张幻灯片分组形状/对象并在PowerPoint演示文稿中翻转它
- windows - 如何使用 vcpkg 安装 gsl 2.6?
- javascript - 从另一个函数中的函数返回
- c# - 如何将数据从自定义呈现页面发送到 Xamarin 中的共享页面
- javascript - Formik 自定义颜色选择器
- c++ - 这种“省略失败”是语言规定的吗?
- corda - 无法使用帐户依赖项构建 cordapp
- python - dpath.utils:TypeError:类型类的对象没有 len()
- docker - KafkaProducer 不读取消息