我在数据框中有一个变量,其中一个字段通常有7-8个值.我想在数据框中的一个新变量中将它们拼写为3或4个新类别.什么是最好的方法?
如果我在类似SQL的工具中但是不确定如何在R中攻击它,我将使用CASE语句.
您将提供的任何帮助将不胜感激!
我想一次用特定的其他值替换向量中的不同值.
在我正在解决的问题中:
以便:
x <- c(4, 2, 0, 7, 5, 7, 8, 9)
x
[1] 4 2 0 7 5 7 8 9
Run Code Online (Sandbox Code Playgroud)
将被转换为:
[1] 8 4 0 5 1 5 7 9
Run Code Online (Sandbox Code Playgroud)
更换后.
我尝试过使用:
x[x == 1] <- 2
x[x == 2] <- 4
Run Code Online (Sandbox Code Playgroud)
等等,但这导致1被7替换.
没有使用任何软件包,这个问题最简单的解决方案是什么?
我已经将文件中的数据导入到R中的数据框中.就像这样.
Name Count Category
A 100 Cat1
C 10 Cat2
D 40 Cat1
E 30 Cat3
H 3 Cat3
Z 20 Cat2
M 50 Cat10
Run Code Online (Sandbox Code Playgroud)
所以现在我想添加Category列,具体取决于Name列中的值.如果Name =(A,D),Category ='Cat1'等等.
这只是我给出的一个简单例子.我有大量的名称和类别,所以我想要一个紧凑的语法.我怎样才能做到这一点?
编辑:我已经更改了示例以更好地满足我的需求,因为名称可以是任何数字.很抱歉以前不太清楚.
我有一个数据帧df.我想用数据帧中的零和全部替换所有零.或者一般来说,如果我必须找到一些值(比如一个)并用其他东西替换值,那么最好的方法是什么?
a b
1 1 0
2 0 1
3 1 0
4 0 0
Run Code Online (Sandbox Code Playgroud) 我有一个数据集,其中包含对 Likert Items 的 90 个响应,我想将其转换为数值。它的结构类似于此处的示例:
q6 <- c("Daily", "Never", "Often", "Very Often", "Daily")
q7 <- c("Never", "Never", "Often", "Often", "Daily")
q23 <- c("Daily", "Often", "Never", "Never", "Neutral")
q17 <- c("Important", "Important", "Very Important", "Neutral", "Not Important")
example <- cbind(q6, q7, q17, q23)
Run Code Online (Sandbox Code Playgroud)
对每个问题的回答略有不同,但主要是在“非常不同意”到“非常同意”、“每天”到“从不”或“重要”到“不重要”的范围内。90 个问题的每个答案都在单独的列中(标记为 q1 > q90)。我想为一组响应创建新列,其数值对应于文本响应(强烈同意(3)到强烈不同意(-3),通过中性(0))。像这样
q6 <- c("Daily", "Never", "Often", "Very Often", "Daily")
n6 <- c(3,-3,1,2,3)
q17 <- c("Important", "Important", "Very Important", "Neutral", "Not Important")
n17 <- c(2,2,3,0,-3)
num_example <- cbind(q6, n6, q17, n17)
num_example
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经使用下面的代码,它生成了一个名为 n6 …
我有以下类型的表:
| 经济特区 | 班级 | 瓦尔 |
|---|---|---|
| 1_1_1 | 1 | 2 |
| 1_1_1 | 5 | 2 |
| 1_1_2 | 5 | 2 |
| 1_1_3 | 1 | 1 |
| 1_1_3 | 5 | 2 |
| 1_1_4 | 1 | 1 |
| 1_1_5 | 2 | 1 |
| 1_2_1 | 1 | 2 |
| 1_2_1 | 5 | 2 |
为了将“Class”列分散到多个新列中,从“Val”列中获取价值,我使用了pivot_wider,一切顺利。我输入了这段代码:
pivot_wider(names_from = Class, values_from = Val, names_sort=T, values_fill = list(n = 0))
得到这样的结果:
| 塞兹 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 1_1_1 | 2 | 0 | 0 | 0 | 2 | 0 | 0 |
| 1_1_2 | 0 | 0 | 0 | 0 | 2 | 0 | 0 |
| 1_1_3 | 1 | 0 | 0 | 0 | 2 | 0 | 0 |
不幸的是,我必须使用外部计算机,其中仅存在基本的 R 包,并且请求附加包的时间并不短。 …
我有Excel表格中的数据,我需要一种方法来清理它.我想删除不一致的值,如分支名称被指定为(计算机科学与工程,CSE,CS,计算机科学).那么我怎样才能将它们全部带入单一符号?
我有一个包含如下数字元素的向量:
jnk1<-c(0,2,1,3,4,2,1,2)
Run Code Online (Sandbox Code Playgroud)
在另一个字符向量中,我想分配与数字向量 jnk1 的每个元素相对应的颜色。
m<-c("red","green","blue","brown","purple","green","blue","green")
Run Code Online (Sandbox Code Playgroud)
我已经使用 for 循环编写了以下代码来自动化该过程:
m<-as.character()
for (i in 1:length(jnk1)){
for (j in 1:length(jnk1)){
for (k in 1:length(jnk1)){
for (l in 1:length(jnk1)){
for (o in 1:length(jnk1)){
if (jnk1[i]==0){
m[i]<-c("red")}
if (jnk1[j]==1){
m[j]<-c("blue")}
if (jnk1[k]==2){
m[k]<-c("green")}
if (jnk1[l]==3){
m[l]<-c("brown")}
if (jnk1[o]==4){
m[o]<-c("purple")}}}}}}
Run Code Online (Sandbox Code Playgroud)
上面的代码完成了少量迭代的工作,但对于较大的迭代,它是非常低效和耗时的。是否可以使用更高效的代码完成工作?