当前位置: 首页 > 知识库问答 >
问题:

替换数据行中的值。对应行a向量的逐帧值

邵伟泽
2023-03-14

我想替换一行数据的每个值。帧,对于大小相等的逻辑矩阵,其值为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

有没有不使用循环的方法来实现这一点?谢谢

共有2个答案

苗征
2023-03-14

我们通过“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示例中的初始数据集是矩阵。但它同时适用于数据。框架和矩阵(带编辑)

暨成双
2023-03-14

为此,您需要一些高级子集:

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…),结果非常复杂。 我想知道是否有更有效的方法。 编辑:添加可复制的示例