首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取R中每行的最后一个非零列名,并创建一个单独的列

在R中获取每行的最后一个非零列名,并创建一个单独的列,可以通过以下步骤实现:

  1. 首先,我们需要使用R中的apply函数来遍历每一行数据。apply函数可以对矩阵或数据框的行或列进行操作。
  2. 使用apply函数时,我们需要指定MARGIN参数为1,表示按行进行操作。
  3. 在apply函数中,我们可以使用一个自定义的函数来处理每一行的数据。在这个函数中,我们可以使用tail函数来获取每行的最后一个元素。
  4. 接下来,我们可以使用ifelse函数来判断最后一个元素是否为零。如果是零,则返回空字符串;如果不是零,则返回最后一个非零列名。
  5. 最后,我们可以将这个新的列添加到原始数据框中,以创建一个单独的列。

以下是一个示例代码:

代码语言:R
复制
# 创建一个示例数据框
data <- data.frame(
  A = c(1, 2, 3, 4),
  B = c(0, 0, 5, 6),
  C = c(7, 8, 0, 0),
  D = c(0, 0, 0, 9)
)

# 定义一个函数来获取每行的最后一个非零列名
getLastNonZeroCol <- function(row) {
  last_nonzero_col <- tail(names(row)[row != 0], 1)
  ifelse(is.na(last_nonzero_col), "", last_nonzero_col)
}

# 使用apply函数遍历每一行数据,并创建一个新的列
data$LastNonZeroCol <- apply(data, 1, getLastNonZeroCol)

# 打印结果
print(data)

这段代码将会输出以下结果:

代码语言:txt
复制
  A B C D LastNonZeroCol
1 1 0 7 0              C
2 2 0 8 0              C
3 3 5 0 0              B
4 4 6 0 9              D

在这个示例中,我们创建了一个包含四列的数据框。然后,我们使用apply函数遍历每一行数据,并使用getLastNonZeroCol函数获取每行的最后一个非零列名。最后,我们将这个新的列添加到原始数据框中。结果显示了每行的最后一个非零列名。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel公式技巧93:查找某行一个值所在标题

有时候,一行数据前面的数据值都是0,从某开始就是大于0数值,我们需要知道首先出现大于0数值所在单元格。...例如下图1所示,每行数据中非值出现位置不同,我们想知道值出现单元格对应标题,即第3行数据值。 ?...图2 在公式, MATCH(TRUE,B4:M40,0) 通过B4:M4与0值比较,得到一个TRUE/FALSE值数组,其中第一个出现TRUE值就是对应值,MATCH函数返回其相对应位置...MATCH函数查找结果再加上1,是因为我们查找单元格区域不是从A开始,而是从B开始。...ADDRESS函数一个参数值3代表标题行第3行,将3和MATCH函数返回结果传递给ADDRESS函数返回值对应标题行所在单元格地址。

9K30
  • PHP PDOStatement::fetchAll讲解

    想要返回一个包含结果集中单独所有值数组,需要指定 PDO::FETCH_COLUMN 。通过指定 column-index 参数获取想要。...PDO::FETCH_CLASS :返回指定类实例,映射每行列到类对应属性名。 PDO::FETCH_FUNC :将每行列作为参数传递给指定函数,返回调用函数后结果。...返回值 PDOStatement::fetchAll()返回一个包含结果集中所有剩余行数组。此数组每一行要么是一个数组,要么是属性对应每个列名一个对象。...下面例子演示了如何从一个结果集中返回单独所有的值,尽管 SQL 语句自身可能返回每行。...= watermelon ) 根据单独把所有值分组 下面例子演示了如何返回一个根据结果集中指定值分组关联数组。

    1.1K31

    MySQL基础笔记

    使用IO流技术将数据保存到本地文件 但是接下来我有这样一个需求:将下面的user.txt文件王五年龄修改为35 张三 23 男 李四 24 男 王五 25 女 赵六 26 女 周七 27 男 我们要如何实现呢...数据库 用于存储和管理数据仓库 一个可以包含多个数据表 数据表 数据库最重要组成部分之一 它由纵向和横向行组成(类似excel表格) 可以指定列名、数据类型、约束等 一个可以存储多条数据...列名n 数据类型n ); -- 注意:最后,不需要加逗号 数据类型 1. int:整数类型 * age int 2. double:小数类型 * score double(5,2) * price...-- 查询名称包含电脑商品信息 SELECT * FROM product WHERE NAME LIKE '%电脑%'; 聚合函数 将一数据作为一个整体,进行纵向计算 聚合函数分类 函数名...一张表只能有一个列作为主键 主键一般用于表数据唯一标识 建表时添加主键约束 -- 标准语法 CREATE TABLE 表名( 列名 数据类型 PRIMARY KEY, 列名 数据类型,

    2.8K30

    爬虫入门指南(2):如何使用正则表达式进行数据提取和处理

    首先,使用open()函数打开一个文件,传入两个参数:文件名和打开模式。打开模式可以是 “w”(写入)、“a”(追加)、“r”(只读)等。如果文件不存在,将会创建一个文件。...使用SQLite数据库存储数据示例代码 SQLite基本语法 创建表格: 使用CREATE TABLE语句创建表格。指定表格名称和定义。每个都包括列名和数据类型。...我们创建一个名为"users"表格,包含id、name和age三个。...我们首先使用sqlite3.connect()函数连接到名为"data.db"SQLite数据库,创建一个游标对象。...然后,我们定义了一条SQL语句,用于向名为"users"插入数据。最后,我们使用cursor.executemany()方法批量执行插入操作,通过conn.commit()保存更改。

    28010

    Spring认证中国教育管理中心-Spring Data R2DBC框架教程六

    对不同值使用相同字段/列名称通常会导致数据损坏,因此您应该使用明确字段/列名称来注释至少一个属性。 using@AccessType(PROPERTY)不能使用,因为不能设置超级属性。...转换器使用任何注册 Spring 转换器来覆盖对象属性到行列和值默认映射。 对象字段用于在行之间进行转换。JavaBean不使用公共属性。...如果您有一个参数构造函数,其构造函数参数名称与行顶级列名称匹配,则使用该构造函数。否则,将使用参数构造函数。如果有多个参数构造函数,则会引发异常。...AbstractR2dbcConfiguration创建一个DatabaseClient实例并将其注册到名为 容器databaseClient。...请参阅乐观锁定以获取更多参考。 映射元数据基础结构在与spring-data-commons技术无关单独项目中定义。在 R2DBC 支持中使用特定子类来支持基于注释元数据。

    2.1K20

    MADlib——基于SQL数据挖掘解决方案(4)——数据类型之矩阵

    上面的例子只用6行表示一个4x7矩阵元素。矩阵行列元素个数分别由row_id和col_id最大值指定。...上面的例子将稠密矩阵转为稀疏表示,新建表存储转换结果。源表类型分别是整型和整型数组,输出表包含三,行ID列名与源表相同,ID和值由参数指定。...返回值为数组类型,如果最后一个参数为‘true’,表示结果表包含最大最小值对应下标数组。...一个mXm矩阵A有逆矩阵,当且仅当矩阵R(A)=m,此时方阵A行列式不为,即|A|≠0,称A为奇异矩阵或满秩矩阵,否则称A为奇异矩阵或降秩矩阵。满秩方阵行、向量组都是线性无关。...从概念上讲,一个mXm矩阵有逆矩阵,当且仅当它把每个m维行()向量都映射到一个唯一m维行()向量。在求解各种矩阵方程时,逆矩阵存在性是很重要

    2K10

    Python读取JSON键值对导出为.csv表格

    ,而值则是这一对应值;因为这个JSON数据包含很多个text(每一个text所有键都是一样,但是值不完全一致),所以我们最后就会得到一个具有很多行.csv格式文件。   ...随后,创建一个空集合fieldnames,用于存储将在CSV文件头部写入列名。   紧接着,我们遍历data列表每个元素,其中每个元素是一个包含JSON格式字符串字典。...对于每个元素,将JSON文本——也就是item['text']解析为字典,获取该字典所有键。这些键将被添加到fieldnames集合,以便稍后在CSV文件头部(列名称)使用。   ...其次,创建一个CSV文件output.csv以进行写入,使用csv.DictWriter对象初始化,其中指定了要写入列名(通过fieldnames变量)。...最后,遍历data列表每个元素,对于每个元素,将JSON文本解析为字典,并将该字典数据写入CSV文件每行对应一个JSON对象。

    31810

    矩阵三种存储方式---三元组法 行逻辑链接法 十字链表法

    若对其进行压缩存储,我们可以将一个数组元素三元看成一个单位存入一维数组,具体如下所示。比如(1,1,1)代表第一行第一元素值为1。注意,这里我们只存储值。 ?   ...我们可以使用一个一维数组来存储每行一个元素在一维数组位置,这样就可以提升访问效率。这样表就叫做行逻辑链接顺序表。   ...2.使用数组 rpos 记录矩阵每行一个 0 元素在一维数组存储位置。 ?   通过以上两步操作,即实现了使用行逻辑链接顺序表存储稀疏矩阵。   ...; //每行一个元素在data数组位置 int rpos[MAXRC]; //行数,数,元素个数 int row,column,number; }RLSMatrix...;   下面我们将要根据用户输入行数,数,元素值,来创建矩阵。

    1.3K40

    R语言中管道操作符 %>%, %T>%, %$% 和 %%

    这些操作符都是来自于一个叫做magrittrR包,所以我们先来安装一下。...2.求这个10000个数绝对值,然后乘以50。 3.把结果转换成一个100行100矩阵。 4.计算矩阵每行均值,四舍五入只保留整数。 5.把结果除以7求余数,话出余数直方图。...3.把结果转换成一个100行100矩阵。 4.计算矩阵每行均值,四舍五入只保留整数。 5.把结果除以7求余数,话出余数直方图。...比如,我们获得一个data.frame类型数据集,通过使用 %%,在右侧函数可以直接使用列名操作数据。...下面定义一个10行3data.frame,列名分别为x,y,z,获取x大于5数据集。使用 %$% 把列名x直接传到右侧进行判断。这里.代表左侧完整数据对象。

    3.6K30

    【生信技能树培训笔记】R语言基础(20230112更新)

    (一)在R中新建项目方式:RStudio,菜单栏File→NewProject→NewDirectory→NewProject→DirectoryName该方式通过新建一个目录方式来新建一个项目,创建一个...数据框要求每一只能有一种数据类型,且数据框只是R语言内部一个数据,不是一个文件。- 数据框单独拿出来一个向量,视为一个整体。一个向量可以出自数据框,也可以用代码生成。...#取数据框最后(不知道具体数)> df1[,ncol(df1)] #函数ncol()求出数据框数,最后即为第“总数”。...指定列名称取交集,其余均包含在新数据框。...或者进行单独指定。默认all=FALSE,表示只取共同或行相同值内容进行合并,当指定all=TRUE时,取两个数据框中指定行列集进行合并,任一表缺失值,则用NA填充。

    4K51

    用 Pandas 做 ETL,不要太快

    ETL 是数据分析基础工作,获取结构化或难以使用数据,把它变为干净、结构化数据,比如导出 csv 文件,为后续分析提供数据基础。...一旦你有了密钥,需要确保你没有把它直接放入你源代码,因此你需要创建 ETL 脚本同一目录创建一个名为 config.py 文件,将此放入文件: #config.py api_key = <YOUR...现在创建一个名为 tmdb.py 文件,导入必要依赖: import pandas as pd import requests import config 向 API 发送单个 GET 请求方法...列名称列表,以便从主数据帧中选择所需。...genres_all 临时,作为电影类别的代表,我们只需要 genres 内 name 属性,稍后把它扩展为单独: result = [] for l in genres_list:

    3.2K10

    pandas数据清洗,排序,索引设置,数据选取

    ---- df.isnull() df空值为True df.notnull() df空值为True 修改列名 df.rename(columns = {'key':'key2'},inplace...df.dropna(how='all')# 一行全部为NaN,才丢弃该行 df.dropna(thresh=3)# 每行至少3个空值才保留 缺失值填充fillna() df.fillna(0)...columns=states ) set_index() 将DataFramecolumns设置成索引index 打造层次化索引方法 # 将columns其中两:race和sex...() 将使用set_index()打造层次化逆向操作 既是取消层次化索引,将索引变回补上最常规数字索引 df.reset_index() ---- 数据选取 [] 只能对行进 行(...Label切片 # df.loc[A,B] A是行范围,B是范围 df.loc[1:4,['petal_length','petal_width']] # 需求1:创建一个变量 test # 如果

    3.2K20

    2分钟,快速认识什么是SQL语言

    它最初是在 70 年代初开发,用于修改和检索 IBM System R 数据库数据。到 1986 年,它被标准化为语法,至今在技术应用仍然非常流行。...关系数据库将数据组织到表,有点像 Excel 电子表格,其中包含数据属性或类型。 每行代表一个单独记录或数据点,具有自己唯一 ID(称为主键)。...我们可以通过从一行获取唯一 ID,并将其存储在不同表不同行称为外键特殊来建立数据点之间关系。 在球队表,球队ID是主键,但在球员表,它是外键。...现在,SQL 作用不仅是读取、创建、更新和删除数据,而且还根据数据嵌入关系将数据连接在一起。 SQL语法由几个关键部分组成。...列名和表名被称为标识符 但我们可能不需要表每一行,因此我们使用 WHERE 关键字过滤结果,以仅包含满足特定条件记录。

    19410

    python数据分析——详解python读取数据相关操作

    最后看下read_csv/table全部相关参数 1.filepath_or_buffer:(这是唯一一个必须有的参数,其它都是按需求选用) 文件所在处路径 2.sep: 指定分隔符,默认为逗号...多的话,会看到一个分层索引 7.prefix: 给列名添加前缀。...,然后将每一行数据作为一个元素存到设定好list,所以最终得到一个list。...使用python I/O 读取CSV文件 使用python I/O方法进行读取时即是新建一个List 列表然后按照先行后顺序(类似C语言中二维数组)将数据存进空List对象,如果需要将其转化为...cols = sheet1.col_values(3)#获取内容 readline读取txt #第一种方法 f = open("data.txt","r") #设置文件对象 line = f.readline

    3K30

    14个实战案例带你了解Linux‘sort’命令

    本文目标是通过14个实际范例让你更深刻理解如何在Linux中使用sort命令。 ? 实战演示 1、目标文件创建 首先创建一个用于执行‘sort’命令文本文件(tecmint.txt)。...5、逆序排列 现在使用‘-r’参数对‘tecmint.txt’文件内容进行逆序排序,并将输出内容重定向到‘reversesorted.txt’文件使用cat命令查看文件内容。 ? ?...当想基于文件数值对文件进行排序时,必须要使用‘-n’参数。 ? 8、基于某列名称排序 基于第9(文件和目录名称,数值)对文件‘lsl.txt’进行排序。 ? ?...排序规则: 除非指定了‘-r’参数,否则排序优先级按下面规则排序 以数字开头行优先级最高 以小写字母开头行优先级次之 待排序内容按字典序进行排序 默认情况下,‘sort’命令将带排序内容每行关键字当作一个字符串进行字典序排序...基于第2,5(数值)和9(数值)对‘ls -l’命令输出进行排序。 ? ? ? ----

    4.1K40

    初识数据库

    1,库(data文件夹文件夹,每创建一个库 , 这个库名称就是文件夹名称,文件夹里面保存着一些这个库相关初始信息) 增:create database db1 charset utf8; #创建一个库...,这里指定是两个字段,id和name,id和name是列名(字段名),id 后面的int意思说id这一数 据只能是int类型,name后面的char意思是,name这一数据只能是...(1,'dsb1'),(2,'dsb2'),(3,'dsb3'); #往t1表插入三行数据,注意你插入每行内容都要和你创建时候字段个数和字段属性对应好,注意每行数据以逗号分隔.   ...删:delete from t1 where id=1; #删除id为1行 清空表:   delete from t1; #如果有自增id,新增数据,仍然是以删除前最后一样作为起始.   ...truncate table t1;数据量大,删除速度比上一条快,且直接从开始.

    61310

    R语言TCGA-Assembler包下载TCGA数据

    双下划线“__”用于分隔文件名五个组件。如果outputFileName是一个空字符串,则文件名只包含其他四个组件。 所有数据文件都具有相同格式。第一行包括列名,而每一行对应一个DNA片段。...第一行是样本TCGA条形码,其他每行对应于一个外显子。第一栏是外显子基因组坐标。从第二开始样本数据。...第5栏是该基因基因组定位。从第6开始,每两对应一个示例,其中第一为Log Ratio,第二共享Log Ratio。...在结直肠癌蛋白质组数据文件(COAD,READ),第一行是样品列名和TCGA条形码,其余每行对应于一种蛋白质。第一显示蛋白质基因符号。第二栏是基因描述。第三是 organism。...在OV糖蛋白组数据文件,仅包含Log Ratio数据。第一行是列名和TCGA示例条形码,其他每行对应于一个糖基化产物。第一显示糖酸盐位置。第二是肽序列。第三是基因符号。第四是有机体。

    4.8K30

    R语言基础-数据清洗函数pivot_longer

    names_to:一个字符向量,指定要根据存储在 cols 指定数据列名信息创建一个或多个新。如果长度为 0,或者如果提供了 NULL,则不会创建任何。...如果长度为 1,将创建一个包含 cols 指定列名。如果长度>1,将创建多个。在这种情况下,必须提供 names_sep 或 names_pattern 之一来指定如何拆分列名。...如果这些参数没有给您足够控制权,请使用 pivot_longer_spec() 创建一个规范对象根据需要手动处理。...原型(或简称 ptype)是一个长度向量(如 integer() 或 numeric()),它定义了向量类型、类和属性。如果您想确认创建是您期望类型,请使用这些参数。...values_to:一个字符串,指定要从存储在单元格值数据创建名称。

    6.7K30

    【数据结构】数组和字符串(八):稀疏矩阵链接存储:十字链表创建、插入元素、遍历打印(按行、按、打印矩阵)、销毁

    稀疏矩阵是指大部分元素为矩阵,而十字链表可以有效地存储和操作这种类型矩阵。在稀疏矩阵十字链表,每个元素都由一个节点表示。...节点包含了几个字段: LEFT:指向该节点在同一行左邻元素地址信息。 UP:指向该节点在同一上邻元素地址信息。 ROW:存储该节点在矩阵行号。...由于行和都是循环链表,行表头节点 BASEROW[i] LEFT 指针循环地链接到该行最右边元素,列表头节点 BASECOL[j] UP 指针循环地链接到该最下边元素。...遍历每一,从第一最后: 通过列表头节点数组获取当前列链表头节点。 遍历链表每个节点: 释放当前节点内存,并将当前节点指针移动到下一个节点。...创建一个节点,并将行、和值存储在节点相应字段

    14910
    领券