R 替换列中的值

R 替换列中的值,r,dataframe,replace,R,Dataframe,Replace,这是我的数据框示例: I UserID | Day_of_week | hour | min #1 1 1 0 0 #2 1 1 0 30 #3 1 1 1 0 #4 1 1 1 30 #5 1

这是我的数据框示例:

    I  UserID | Day_of_week | hour |   min 
   #1    1           1          0     0     
   #2    1           1          0     30     
   #3    1           1          1     0     
   #4    1           1          1     30   
   #5    1           1          2     0      
   #6    1           1          2     30   
   ...   ...         ...       ...    ...  
   #10    1          2          0     0     
   #11    1          2          0     30    
   #12    1          2          1     0     
   #13    1          2          1     30    
   ...   ...         ...       ...    ...  
列Day_of_week从1变为7,其中:

2=星期一,3=星期二。。。。6=星期五

7号和1号分别是星期六和星期天

我想在周的第天的列中更改周的名称。大概是这样的:

       I  UserID | Day_of_week | hour |   min 
       #1    1       Sunday        0     0     
       #2    1       Sunday        0     30     
       #3    1       Sunday        1     0      
       ...   ...         ...      ...    ...  
       #10    1      Monday        0     0     
       #11    1      Monday        0     30    
       #12    1      Monday        1     0     
       #13    1      Monday        1     30    
       ...   ...         ...      ...    ... 

制作一个带数字的函数

library(dplyr)

day_of_week <- function(num){

  ifelse(num == 1, "Sunday", 
         ifelse(num ==2, "Monday", 
                ifelse(num == 3, "Tuesday", 
                       ifelse(num == 4, "Wednesday", 
                              ifelse(num == 5, "Thursday", 
                                     ifelse(num == 6, "Friday", "Saturday"))))))

  }

制作一个带数字的函数

library(dplyr)

day_of_week <- function(num){

  ifelse(num == 1, "Sunday", 
         ifelse(num ==2, "Monday", 
                ifelse(num == 3, "Tuesday", 
                       ifelse(num == 4, "Wednesday", 
                              ifelse(num == 5, "Thursday", 
                                     ifelse(num == 6, "Friday", "Saturday"))))))

  }

我认为可以将列转换为因子变量

你可以试试下面的方法

df$day_of_week <- factor(df$day_of_week,
                          labels = c("Sunday", "Monday","Tuesday","Wednesday", "Thursday", "Friday", "Saturday"),
                          levels = c(1,2,3,4,5,6,7))

df$day\u of_week我认为您可以将该列转换为因子变量

你可以试试下面的方法

df$day_of_week <- factor(df$day_of_week,
                          labels = c("Sunday", "Monday","Tuesday","Wednesday", "Thursday", "Friday", "Saturday"),
                          levels = c(1,2,3,4,5,6,7))
df$day\u of_week只需使用一个向量即可

dow <- c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
set.seed(2)
df <- data.frame(Day_of_week = sample(7, size=20, replace=TRUE))
head(df)
#   Day_of_week
# 1           2
# 2           5
# 3           5
# 4           2
# 5           7
# 6           7
df$Day_of_week <- dow[df$Day_of_week]    
head(df)
#   Day_of_week
# 1      Monday
# 2    Thursday
# 3    Thursday
# 4      Monday
# 5    Saturday
# 6    Saturday
只需使用一个向量

dow <- c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
set.seed(2)
df <- data.frame(Day_of_week = sample(7, size=20, replace=TRUE))
head(df)
#   Day_of_week
# 1           2
# 2           5
# 3           5
# 4           2
# 5           7
# 6           7
df$Day_of_week <- dow[df$Day_of_week]    
head(df)
#   Day_of_week
# 1      Monday
# 2    Thursday
# 3    Thursday
# 4      Monday
# 5    Saturday
# 6    Saturday
dow
library(expss)
#创建类似您的示例数据集
每周的第天
库(expss)
#创建类似您的示例数据集

如果将数字添加到星期六的任何特定日期,将数字转换为日期,则可以使用
base::weekdays
功能:

df 1 1 0 0周日
#>2121030星期日
#>3 3 11 10星期日
#>4 4 1 30星期日
#>5 5 11 20星期日
#>611230星期日
#>710120星期一
#>81112030星期一
#>912110星期一
#>101311230星期一

如果将数字添加到星期六的任何特定日期,将数字转换为日期,则可以使用
base::weekdays
功能:

df 1 1 0 0周日
#>2121030星期日
#>3 3 11 10星期日
#>4 4 1 30星期日
#>5 5 11 20星期日
#>611230星期日
#>710120星期一
#>81112030星期一
#>912110星期一
#>101311230星期一

我认为向量索引应该足够了,你尝试过什么?
c(“星期日”、“星期一”、“星期六”)[x$Day\u of\u week]
?但我需要读取值​​在“星期几”列中,按周名称进行更改。如果(day_of_week==1),你可以使用
weekdays
生成一个向量子集:
df$day_of_week@r2evans(不,很遗憾,我需要找一份工作来支付我去做这类事情的费用。或者使用R,就这一点而言…)我认为向量索引应该足够了,你试过什么?
c(“星期日”、“星期一”、“星期六”)[x$day_of_week]
?但我需要读取值​​在“星期几”列中,按周名称进行更改。如果(一周中的一天==1),你可以使用
工作日
生成一个向量来子集:
df$day\u of_周@r2evans(不,很遗憾,我需要找一份工作来支付我去做这些事情的费用。或者使用R,就这点而言……)史蒂文:我赞赏你的顽强,但这是非常低效的。我强烈鼓励使用矢量化索引,正如我在评论中所建议的那样。@r2evans在我的研究生时代学习R的许多结果之一是我通过“暴力”做了很多事情;史蒂文:我赞赏你在这里的顽强,但这是非常低效的。我强烈鼓励使用矢量化索引,正如我在评论中所建议的那样。@r2evans在我的研究生时代学习R的许多结果之一是我通过“暴力”做了很多事情;我将开始将其构建到我的工作流程中。你是说我应该完成工作日的名称和级别,对吗?你能详细说明一下,让我自己更正一下吗?你的意思是说我应该完成工作日的名称和级别,对吗?你能详细说明一下吗?这样我就可以纠正自己了。