我想替换一行数据的每个值。帧,对于大小相等的逻辑矩阵,其值为TRUE,由向量的对应行的值确定。以下是一个例子:
> df1
[,1] [,2] [,3] [,4]
[1,] 2 8 9 4
[2,] 2 6 6 6
[3,] 4 9 4 8
> a
[,1] [,2] [,3] [,4]
[1,] TRUE FALSE FALSE TRUE
[2,] TRUE FALSE FALSE FALSE
[3,] TRUE FALSE TRUE FALSE
> df2
[1] 5 4 6
所以结果应该是这样的:
> df1
[,1] [,2] [,3] [,4]
[1,] 5 8 9 5
[2,] 4 6 6 6
[3,] 6 9 6 8
有没有不使用循环的方法来实现这一点?谢谢
我们通过“a”或“df1”的行复制“df2”,基于“a”的逻辑矩阵,我们更改值
ifelse(a, df2[row(a)], df1)
# [,1] [,2] [,3] [,4]
#[1,] 5 8 9 5
#[2,] 4 6 6 6
#[3,] 6 9 6 8
如果它是
data.frame
,那么我们只需要更改as.matrix(df1
),它应该在这两种情况下都能工作
df1[] <- ifelse(a, df2[row(a)], as.matrix(df1))
或者另一种选择是
(df1*!a) + (df2[row(a)]*a)
# [,1] [,2] [,3] [,4]
#[1,] 5 8 9 5
#[2,] 4 6 6 6
#[3,] 6 9 6 8
注意:输出都是预期输出中显示的
(带编辑)矩阵
,OP示例中的初始数据集是矩阵
。但它同时适用于数据。框架
和矩阵
为此,您需要一些高级子集:
df1[a] <- df2[row(a)[a]]
输出:
> df1
V1 V2 V3 V4
1 5 8 9 5
2 4 6 6 6
3 6 9 6 8
此解决方案适用于数据帧或矩阵。
我有3个数据帧。第一数据帧(例如df1)具有多行和多列。第二和第三数据帧(例如df2和df3)仅具有来自DF1的一行和列的子集。df2和df3中的列名相同。所以我要做的是将df1中的每一行与df2和DF3中的单行进行比较。如果来自df1的单元格的值与df2的单元格内容匹配,则将df1中单元格的值替换为1;如果来自df1的单元格的值与df3匹配,则将df1中单元格的值替换为2;如果df2的单元格内容
本文向大家介绍如何通过R中的行将数据帧值转换为向量?,包括了如何通过R中的行将数据帧值转换为向量?的使用技巧和注意事项,需要的朋友参考一下 数据可以任何形式提供给我们,但有可能不适合用于分析。有时数据记录在数据框中,但我们可能需要将其作为向量。在这种情况下,我们必须更改向量中数据帧的值。这可以通过在将数据帧与t换位后将它们读取为矢量来读取数据帧值来完成。 示例 请看以下数据帧- 让我们看另一个例子
我有一个熊猫的数据框架,看起来像这样: 当列名是从15到159的A时,我想替换pr行名的值。我如何使用熊猫在Python中做到这一点?
我是熊猫数据框的新手,我想应用一个函数,在同一列中取几行。就像当你应用函数diff(),但我想计算文本之间的距离。所以我定义了一个测量距离的函数,我试图使用应用,但我不知道如何选择几行。下面我展示了一个我尝试过的例子和我所期望的: 但它不起作用。我想得到的是: 提前感谢您为我提供的任何帮助。
(我很抱歉我的例子过于简单,我将尝试解决这个问题,并以更方便的格式格式化我更相关的示例,以便直接复制到R中。特别是,有多个值列,以及前面一些不需要解析的其他信息的列。 我对R和data.table都不熟悉,所以我希望能就我发现的一个问题提供意见。我正在处理一个数据表,其中一列是冒号分隔的格式字符串,作为其他冒号分隔列中值的图例。为了解析它,我必须首先将其拆分为它的组件,然后搜索我需要稍后索引值字符
我和Spark一起在Databricks上工作。编程语言是Scala。 我有两个数据帧: 主数据框:见截图:1 查找数据帧:参见屏幕截图3 我想: 查找主数据框中“年龄”=-1的所有行 我对如何做这件事伤了脑筋。我唯一想到的是将dataframe存储为DataRicks中的表,并使用SQL语句(SQL.Context.SQL…),结果非常复杂。 我想知道是否有更有效的方法。 编辑:添加可复制的示例