新手(初学者)学R语言第一课,从学正确导入数据开始

news2024/11/24 9:34:36

初看题目好像我在教你怎么导入数据,不不不,我是在教你正确的导入数据,不是说数据导入R就叫正确导入数据了。本章为新手教程,老手可以跳过。
这个内容早就想写了,今天有点空和大家聊一下。为什么R语言对于新手而言不太友好,有些人觉得R很难学。很多原因都有,我今天来说下没有正确导入数据的报错,比如下面报错

Error in xtfrm.data.frame(x) : cannot xtfrm data frames

在这里插入图片描述
这对新手来说绝对是个大打击,你根本没法找到原因,会影响及的积极性和学R的信心,因为我就是这么走过来的。
因为R语言是个注重格式的语言,目前导入数据的R包种类繁多,有些R包存在格式转换问题,所以导入数据后分析容易出现各种各样的问题。我以我一个粉丝发给我的数据和代码为例子,就是以我写得scitb5函数来做个亚组分析得交互表,分析的内容详见这篇文章《scitb5函数2.1版本(交互效应函数P for interaction)发布----用于一键生成交互效应表、森林图》
先导入R包和我写得函数

library(tidyverse)
setwd("E:/公众号文章2024年/新手第一课,从学导入数据开始/scitb5")
source("./helper/21scitb5.R")

用我文章示例得代码导入数据

d1 <- read.csv("zaochan.csv", sep = ",", header = TRUE)

在这里插入图片描述
设置协变量和交互变量,

cov1        <- c("lwt", "smoke", "ptl", "ui", "ftv", "race")
interaction <- c("race", "smoke", "ui")

转换数据

bc1 <- d1 %>%
  mutate(
    race = case_match(race,
                      "black" ~ 1,
                      "white" ~ 2,
                      "other" ~ 3
    )
  ) %>%
  mutate(smoke = if_else(smoke == "nonsmoker", 0, 1)) %>%
  mutate(across(c(race, low, ht, ui), factor))

最后使用我的sicitb5函数生成表,似乎一切很顺利,得出结果。

out <- scitb5(data        = bc1, 
              x           = "age", 
              y           = "low", 
              Interaction = interaction, 
              cov         = cov1, 
              family      = "glm"
            )

在这里插入图片描述
下面咱们用readr包导入数据再跑一次

library(readr)
d2 <- readr::read_csv("zaochan.csv")

在这里插入图片描述
好像几乎一样,没什么问题,但是还是不一样的

bc2 <- d2 %>%
  mutate(
    race = case_match(race,
                      "black" ~ 1,
                      "white" ~ 2,
                      "other" ~ 3
    )
  ) %>%
  mutate(smoke = if_else(smoke == "nonsmoker", 0, 1)) %>%
  mutate(across(c(race, low, ht, ui), factor))

生成结果

out <- scitb5(data        = bc2, 
              x           = "age", 
              y           = "low", 
              Interaction = interaction, 
              cov         = cov1, 
              family      = "glm"
)

在这里插入图片描述
同样的代码,换个导入数据方法就跑不出来了,而且这个报错你根本看不出来是什么回事,没办法修改。
有人可能会说这是我scitb5函数的bug,但其实不是是这句很普通代码的报错,一句涉及数据转换的代码,这句代码应该很常用,涉及很多场景,很多R包都会用

length(levels(factor(bc2[,"low"]))) == 2

在这里插入图片描述
还有这句很普通的代码也会经常报错

d2<-rbind(d2,d1)

也会有人会说这只是个小概率事件,但是这样的例子很多,两三页都翻不完
在这里插入图片描述
这只是一个小例子,还有其他很多千奇百怪的报错。
这样类似容易出错的R包还有readxl包,haven包等因为这些包可以直接导入excel文件,方便是方便了,但是有时会容易出现莫名其妙的错误。不是说这些包没有用,还是有很大用处的(比如在一些特殊的场景),但是对新手来说,稳定不容易出错才是他们目前最需要的。
因此正确的常规导入数据方法是很重要的
我推荐两种方法导入数据,这些都是我长期实践觉得比较稳定,不容易出错的,
第一:就是如果你是excel数据:
我们点:文件----另存为----csv格式
在这里插入图片描述
然后用R自带的格式导入,示例如下

bc<-read.csv("E:/r/test/nahnesme.csv",sep=',',header=TRUE)

第二:如果是SPSS数据,咱们可以使用foreign包,如我乳腺癌的例子,to.data.frame=T这个一定要有,因为这句等于把数据转成数据框。

library(foreign)
bc <- read.spss("E:/r/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)

在这里插入图片描述
上面这个报错在部分情况使用下面代码把数据强制转成数据框格式有一定几率也可以解决问题

d2<-as.data.frame(d2)

但是对于新手来说,良好的数据导入习惯是成长很好的帮助。

其他数据以此参考,本期结束。

下面是个视频介绍

新手学R第一课,从学正确导入数据开始

最后和大家汇报一下,目前nhanes阈值效应函数已经基本写好,目前正在测试中,估计过段时间就可以和大家见面了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1849906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

threeJS 基础 03---动画

1.动画效果渲染循环 注&#xff1a; 使用循环渲染时&#xff0c;不用手动渲染到画布且再次调用监听更新事件&#xff0c;两者只用使用其中之一即可 周期循环&#xff0c;默认理想状态下每秒循环60次 requestAnimationFrame 渲染帧率&#xff08;详情见threeJs的文档&#xff…

区块链会议投稿资讯CCF A--WINE 2024 截止7.15 附录用率 附录用的区块链文章

Conference&#xff1a;The Conference on Web and Internet Economics (WINE) CCF level&#xff1a;CCF A Categories&#xff1a;Cross-cutting/comprehensive/emerging Year&#xff1a;2024 Conference time&#xff1a; December 2-5, 2024 录用率&#xff1a; sele…

Pyqt5 + Qt Creator实现QML开发环境配置

先安装Qt Creator, 该软件主要是为了编辑QML文件 在pycharm中配置外部插件&#xff0c;实现Qt Creator的调用 配置完成后&#xff0c;右击qml文件选择Qt Creator就可以直接进行编辑了

高效22KW双向DCDC储能、充电电源模块项目设计开发

22kW 双向CLL谐振变换器的目标是输出电压范围宽、高效率和高功率密度的双向应用&#xff0c;如电动汽车车载充电器和储能系统。研究了一种新的灵活的 CLLC 双向谐振变换器增益控制方案&#xff0c;以便在充放电模式下实现高效率和宽电压增益范围。得益于 Wolfspeed C3MTM 1200V…

Python+Selenium自动化入门

本章内容需有一定Python基础&#xff0c;如何不懂的&#xff0c;请先学习Python。 什么&#xff1f;&#xff1f;没有好的学习资料&#xff0c;给你准备好了&#xff01;&#xff01; Web自动化环境搭建 1、软件准备 python64位安装包chrome64位浏览器&驱动浏览器驱动下…

基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

Java 超详细实现导入导出 (包含时间转换问题和样式)

序言 工作中遇到了导入导出问题&#xff0c;并且出现了导入或导出Excel时间格式变为数字的问题。通过学习解决实现了这些功能&#xff0c;记录总结分享给大家。本文将详细介绍如何使用 Java 编程语言和 Apache POI 库来实现这些功能。我们将通过一个示例项目演示如何从数据库中…

STM32学习笔记(十)--I2C、IIC总线协议详解

概述&#xff1a;Inter Integrated Circuit&#xff0c;一组多从 多组多从 有应答 是一种同步&#xff08;具有时钟线需要同步时钟SCL&#xff09;、串行&#xff08;一位一位的往一个方向发送&#xff09;、半双工&#xff08;发送接收存在一种&#xff09;通信总线。 &…

代码随想录算法训练营第六十七天 | 字符串接龙、有向图的完全可达性、岛屿的周长

字符串接龙 文字讲解&#xff1a;110. 字符串接龙 | 代码随想录 解题思路 本题只需要求出最短路径的长度就可以了&#xff08;想到广搜&#xff09;&#xff0c;不用找出具体路径。 所以这道题要解决两个问题&#xff1a; 图中的线是如何连在一起的起点和终点的最短路径长…

Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享

大家好&#xff0c;我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍&#xff0c;我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图&#xff0c;可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…

临时关闭Windows安全中心

在使用WindowsOS是&#xff0c;微软安全中心是我们必不可少的安全防护&#xff0c;但有时我们也会产生想要将其关闭的需求&#xff0c;下面将要介绍如何临时关闭Windows的安全中心 一、打开安全中心、选择“病毒与威胁防护”&#xff0c;点击“管理设置” 之后将其实时保护关闭…

材料科学SCI期刊,中科院3区,收稿范围广,易录用

一、期刊名称 International Journal of Material Forming 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;材料科学 影响因子&#xff1a;2.4 中科院分区&#xff1a;3区 三、期刊征稿范围 该杂志发表和传播材料成型领域的原创研究。该研究应构成对材料…

multiprocessing多进程计算及与rabbitmq消息通讯实践

1. 需求与设计 我所设计的计算服务旨在满足多个客户对复杂计算任务的需求。由于这些计算任务通常耗时较长且资源消耗较大&#xff0c;为了优化客户体验并减少等待时间&#xff0c;我采取了并行计算的策略来显著提升计算效率。 为实现这一目标&#xff0c;我计划利用Python的m…

展讯-源码编译

1.硬件要求 编译主机要求&#xff0c;注意尽量不要使用虚拟机 CPU&#xff1a;Intel(R) Core(TM) i7-4790 CPU 3.60 GHz 内存&#xff1a;8G 硬盘&#xff1a;500G SSD Ubuntu 版本&#xff1a;Ubuntu 64-bit 14.04.5 LTS 这是最低版本要求&#xff0c;实际性能越高越好 2…

尽管担任社长 宫崎英高95%时间还是在做游戏

宫崎英高表示&#xff0c;虽然他是 FromSoftware 工作室的社长&#xff0c;但他日常工作的绝大部分时间都是在指导游戏开发。因魂系列大获成功而成为 FromSoftware 社长的宫崎英高在接受《卫报》采访时表示&#xff0c;企业高管生活并不是他的兴趣所在。 “我喜欢帮助年轻的监督…

数据库精选题(一)(关系数据库设计)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 练习题 题型一&#xff1a;判断关系…

在scrapy中使用Selector提取数据

经院吉吉&#xff1a; 首先说明一下&#xff0c;在scrapy中使用选择器是基于Selector这个对象滴&#xff0c;selector对象在scrapy中通过XPATH或是CSS来提取数据的&#xff0c;我们可以自己创建selector对象&#xff0c;但在实际开发中我们不需要这样做&#xff0c;因为respons…

DAY10-力扣刷题

1.最后一个单词的长度(简单) 58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子…

8.华为两台交换机的三种连接方式access 、trunk、undo portswitch

目的&#xff1a;两台三层交换机的三种连接方式 1.access 2.trunk 3.undo portswitch 模拟机不支持此配置&#xff0c;实体机支持 第一种access CE1配置 [~HUAWEI]vlan batch 10 [~HUAWEI]int Vlanif 10 [~HUAWEI-Vlanif10]ip add 10.10.10.1 24 [~HUAWEI]int g1/0/0 [~HUAWE…

空间复杂度 线性表,顺序表尾插。

各位少年&#xff0c;大家好&#xff0c;我是那一脸阳光&#xff0c;本次分享的主题是时间复杂度和空间复杂度 还有顺序表文章讲解和分享&#xff0c;如有不对可以评论区指导。 时间复杂度例题 // 计算斐波那契递归Fib的时间复杂度&#xff1f; long long Fib(size_t N){if(N…